[英]Is there a way to prevent creation of anonymous (inner) classes, but allow inheritance of the class?
我有这个课:
public class MainClass {
...
}
此类应由另一个类扩展,以继承其样式和方法。 因此,应该允许:
public class ChildrenClass extends MainClass {
...
}
但是我不希望其他开发人员从我的MainClass创建内部类(匿名类),如下所示:
MainClass anonymousClassInstance = new MainClass(){...}
有没有办法在Java中做到这一点?
如果所有子类都在同一个包中,则可以将MainClass
包MainClass
私有,以避免被其他包中的任何类扩展。
package mainPackage;
class MainClass { // note the missing public modifier
}
同一包中的子类:
package mainPackage;
public class SubClass extends MainClass { // this extension works
}
其他包装中的扩展:
package externalPackage;
import mainPackage.MainClass;
public class SomeClass {
public void foo() {
MainClass foo = new MainClass() {
// doesn't work because `MainClass` is not visible
};
}
}
问题在于, MainClass
在其他软件包中根本不可见。 在上面的示例中,import语句和变量声明也失败。 对于您的特殊情况,它仍然可能是一种解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.