为什么内部类不能声明静态成员?

Java教程指出,由于内部类与封闭类的实例关联,因此它(内部类)不能自己定义任何静态成员。

有趣的是,为什么内部类不能声明静态成员,例如一些private static字段,这个内部类的实例可能与同一个内部类的其他实例共享? 这只是Java中的事物的实现,必须被认为是理所当然的或者其他的东西?


基本上只是一个任意的决定。 没有理由不支持,但也没有任何理由支持它。 只需在外部类中声明静态字段即可。

此外,该引用可能不完全正确:我相信你可以在内部类中声明静态serialVersionUID。


由于Java语言规范如此说明:

内部类是一个嵌套类,它不是明确或隐式地声明为静态的。 内部类可能不会声明静态初始化器(第8.7节)或成员接口。 内部类可能不会声明静态成员,除非它们是编译时常量字段(第15.28节)。

至于为什么这样指定,我不知道。 我的猜测是,内部类被设计为小型辅助类,复杂性应该非常有限。


内部class不能声明static字段,除非它们是编译时常量。 因此,如果您将static字段声明为final则它将起作用。

class Foo {
    class Test {
       final static int i = 10;
    }
}

将编译和运行完美

static字段只能在static或顶级类型中声明。 因此,一个(纯的) static变量只能在static class声明。

链接地址: http://www.djcxy.com/p/91981.html

上一篇: Why can't inner classes declare static members?

下一篇: Why interface can only be declared in top