java中的内部类和封闭实例?

Ank*_*and 1 java class

在阅读 java Doc 时,我得到了以下内容。

  1. 如果 O 是 C 的直接词法封闭类并且 C 的声明未出现在静态上下文中,则内部类 C 是类 O 的直接内部类

所以如果我写

public class O{
    class Inner1{
        //
    }
    class Inner2{

    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是在这两个内部类中,哪一个是 O 的直接内部类?

我也得到了一些要点。

2.如果类 O 是 C 的第 n-1 个词法封闭类的直接封闭类,则它是类 C 的第 n 个词法封闭类。

3. 类 O 的直接内部类 C 的实例 i 与 O 的实例关联,称为 i 的直接封闭实例。对象的直接封闭实例(如果有)在创建对象时确定。

4. 对象 o 是其自身的第零个词法封闭实例。

5. 如果对象 o 是 i 的第 n-1 个词法封闭实例的直接封闭实例,则它是实例 i 的第 n 个词法封闭实例。

6. 其声明发生在静态上下文中的内部类 I 的实例没有词法上封闭的实例。但是,如果 I 立即在静态方法或静态初始化程序中声明,那么 I 确实有一个封闭块,它是词法上封闭 I 声明的最内层块语句。

7. 对于 C 的每个超类 S(其本身是类 SO 的直接内部类),都有一个与 i 关联的 SO 实例,称为 i 相对于 S 的直接封闭实例。对象的直接封闭实例当通过显式构造函数调用语句调用超类构造函数时,确定其类的直接超类(如果有)。

8.当内部类(其声明不在静态上下文中出现)引用作为词法封闭类的成员的实例变量时,将使用相应词法封闭实例的变量。

请用简单的术语向我解释这些事情,因为在阅读这些内容时它已经看起来很混乱

Sot*_*lis 5

它们都是因为是和O的直接词法封闭类Inner1Inner2

注意“ a

如果 O是 C 的直接词法封闭类并且 C 的声明未出现在静态上下文中,则内部C 是类 O 的直接内部类

不一定只有一个。可以有很多。