我有以下情况:
public interface A {
void doSomethingCool();
}
public interface B extends A {
void doSomethingVeryBCool();
}
public interface C extends A {
void doSomethingVeryCCool();
}
在我的应用程序中,我只能使用实现B或C的类。但是有部分代码,我想使用“a.doSomethingCool()”,因为我不知道(并且不关心)使用了哪种实现方式。
我可以强制执行,只有B和C的实现吗? 或者阻止接口A的实现?
答案 0 :(得分:5)
您不能直接强制执行未实现的接口,但是您可以创建接口package-local:
interface A {...} //no public
这样,包外的类无法看到界面。
编辑:但是,这确实意味着你不能做像
这样的事情A a = getA();
在包外,因为A无法解析。