我在 java 8 中模拟公共接口时遇到问题。我现在有这个方法的接口:
public interface A<T> {
void method1(T t) throws someException;
void method2(T t) throws someException;
default method3() {
return Collections.emptyMap();
}
}
接口 A 由 class 实现B
,它是一个抽象类:
public abstract class B<T> implements A<T> {
@Override
public void method1(T type) throws someException {
// (.... some code snipets ....)
}
}
method1
包含所有逻辑,应该是开发人员可以看到/使用的逻辑。
现在,下面表示类的具体表示B
:
public final class ConcreteB extends B<someObject> {
private static ConcreteB concreteBInstance = null;
private ConcreteB() {
}
public static ConcreteB getInstance() {
if (concreteBInstance == null) {
concreteBInstance = new ConcreteB();
}
return concreteBInstance;
}
@Override
public void method2(someObject someObject) throws someException {
// (... code ...)
}
}
因此,总而言之,B 的具体实现实现了method2
(和方法3,如果用户愿意)。B 类实现了method1
,其中包含所有逻辑。
我的问题是,当我这样做时ConcreteB.getInstance()
,开发人员可以使用的方法是method1
、method2
和method3
,并且我只想让开发人员可以看到 method1。但是因为 java 8 不允许我在接口上创建私有方法,所以我不知道该怎么做。
有关如何解决此问题的任何提示?
谢谢!