繁体   English   中英

我可以阻止实现接口吗?

[英]Can I prevent an interface from being implemented?

我有以下情况:

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?

您不能直接强制执行未实现的接口,但是可以将接口设置为本地包:

interface A {...} //no public

这样,该包外部的类将看不到该接口。

编辑:但是,这确实意味着您不能做类似的事情

A a = getA();

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM