为什么Java禁止内部类中的静态字段?

class OuterClass {

class InnerClass {

static int i = 100; // compile error

static void f() { } // compile error

}

}

虽然无法使用来访问静态字段OuterClass.InnerClass.i,但是如果我想记录一些应该是静态的内容(例如,创建的InnerClass对象的数量),则使该字段静态化将很有帮助。那么,为什么 Java禁止内部类中的静态字段/方法呢?

编辑:我知道如何使编译器对静态嵌套类(或静态内部类)感到满意,但是我想知道的是为什么Java禁止从语言设计和内部类(或普通内部类)内部的静态字段/方法实施方面,如果有人对此有更多了解。

回答:

内部类背后的想法是在封闭实例的上下文中进行操作。以某种方式允许静态变量和方法与这种动机相矛盾?

8.1.2内部类和封闭实例

内部类是未显式或隐式声明为static的嵌套类。内部类不得声明静态初始化器(第8.7节)或成员接口。内部类不得声明静态成员,除非它们是编译时常量字段(第15.28节)。

以上是 为什么Java禁止内部类中的静态字段? 的全部内容, 来源链接: utcz.com/qa/403725.html

回到顶部