如何使内部类不可实现?

unj*_*nj2 1 java class inner-classes

我想要一个静态内部类,即使是外部类也无法实例化.现在我只有一个文档说"请不要实例化这个对象".我可以给出更好的信号吗?

Ste*_*n C 8

我想要一个静态内部类,即使是外部类也无法实例化.

我假设"外部类"真的意味着封闭的类.

  • 如果您不想限制封闭类,那么创建内部类的唯一构造函数private将具有所需的效果.

  • 如果你想限制封装类,答案是没有办法做到这一点.如果将内部类构造函数声明为private,则封闭类仍然可以访问它并实例化它.如果将内部类声明为abstract,则封闭类仍然可以声明子类并实例化该类.

但是,我认为这(即阻止内部类的所有实例化)是毫无意义的练习.内部类中的任何非静态声明都不能以任何方式使用,并且任何静态声明也可以在封闭类中声明.

此外,通过编辑包含两个类的源文件,可以避免任何"阻止"封闭类实例化内部类的操作.private如果以正确的方式进行,即使是具有构造函数的类也可以使用反射进行实例化.