我可以阻止实现接口吗?

时间:2017-03-10 12:18:18

标签: java oop

我有以下情况:

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的实现?

1 个答案:

答案 0 :(得分:5)

您不能直接强制执行未实现的接口,但是您可以创建接口package-local:

interface A {...} //no public

这样,包外的类无法看到界面。

编辑:但是,这确实意味着你不能做像

这样的事情
A a = getA();

在包外,因为A无法解析。