可以在静态上下文中创建类而无需将其声明为静态,这就是在这里发生的情况。让我们看看被声明为静态的并在静态上下文中创建的含义:
在静态上下文中创建的匿名类与非静态上下文中创建的匿名类之间的区别在于它是否具有封闭的实例:
如果C是一个匿名类,则:
如果类实例创建表达式出现在静态上下文中,则我没有立即封闭的实例。
否则,i的直接封闭实例就是这个。
声明为静态的嵌套类允许使用静态成员:
内部类是未显式或隐式声明为static的嵌套类。
根据Java编程语言的常规规则,不是内部类的嵌套类可以自由声明静态成员。
通过说一个“隐式声明为静态的”嵌套类,它指的是接口内的类之类的东西:
接口的成员类是隐式静态的(第9.5节),因此永远不要将其视为内部类。
匿名类不是声明为静态的(既不是用关键字显式声明的,也不是隐式声明(例如在接口内部的)),因此不允许声明静态成员。但是,可以在静态上下文中创建它们,这意味着它们不引用封闭的实例。
由于匿名类未声明为静态,因此问题中的两个引号均保持一致。



