繁体   English   中英

有没有一种方法可以防止创建匿名(内部)类,但允许类的继承?

[英]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中做到这一点?

如果所有子类都在同一个包中,则可以将MainClassMainClass私有,以避免被其他包中的任何类扩展。

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.

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