这是JLS 8.1.3定义词汇封闭类型概念的方式:
类或接口O是第0个词法封闭类型 声明自己。
类O是类的第n个词法封闭类型声明 C如果它是n-1'的立即封闭类型声明 词汇封闭C的类型声明。
因此,从这个定义中不清楚是否正在考虑任何内部类,或者仅仅是类或接口O 的内部类。这些是不同的概念,因为最后一个概念定义如下:
内部类C是类或接口O的直接内部类,如果 O是C的直接封闭类型声明 C 的声明不会出现在静态上下文中。
如果类是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
}
}
立即封闭类型的definitioin被视为任何内部类或inner classes of class or interface O
?
答案 0 :(得分:2)
Bar
和Foo
都有A
作为紧接着的类型声明。他们处于平等地位。 Foo
也被方法声明包围的事实不会影响这一点。