考虑 JLS 关于确定封闭实例§:15.9.2 的以下规则:
如果 C 是本地类,则:
– 如果 C 出现在静态上下文中,则 i 没有立即封闭的实例。
–否则,如果类实例创建表达式出现在静态上下文中,则会发生编译时错误。
– 否则,令 O 为 C 的直接封闭类。令 n 为整数,使得 O 是出现类实例创建表达式的类的第 n 个词法封闭类型声明。i 的直接封闭实例是 this 的第 n 个词法封闭实例。
现在关于点:2(粗体)不确定这真正意味着什么:在静态上下文中发生的本地类实例化 - 可能会产生编译错误。
在静态方法中也允许类(本地类)的声明和实例化 - 不确定该规则涵盖哪些极端情况。