这是JLS 8.1.3定义词法包围类型概念的方式:
类或接口O是第零个词汇包围类型
自我声明。
类O是类的第n个词法包围类型声明
C,如果它是第n-1个的立即封闭类型声明
词汇上包含C的类型声明。
因此,从该定义中不清楚是要考虑任何内部类,还是仅考虑类或接口O的内部类。这些是不同的概念,因为最后一个定义如下:
内部类C是类或接口O的直接内部类,如果
O是C的立即封闭类型声明,而O是
C的声明不在静态上下文中发生。
C类是类或接口O的内部类,如果它是
O的直接内部类或O的内部类的内部类。
更清楚地说,让我提供一个示例:
class A{
class Bar{ } //inner class of class A
public static void main(String[] args){
class Foo{ } //inner class, but not an inner class of class A
}
}
DEMO
立即封闭类型的定义被认为是任何内部类或
inner classes of class or interface O
? 最佳答案
Bar
和Foo
都将A
作为立即封闭的类型声明。他们处于平等地位。方法声明也包含Foo
的事实并不影响此。
关于java - 类的词法封闭类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27856338/