gpt4 book ai didi

java - 局部内部类的顺序

转载 作者:搜寻专家 更新时间:2023-11-01 03:04:05 28 4
gpt4 key购买 nike

为什么局部内部类取决于定义的顺序。例如,首先定义的局部内部类不能为第一个局部内部类之后定义的类创建对象。

`package inner;

public class OuterClass {
class Inner1{
Inner2 ic=new Inner2(); // No compilation error

}
class Inner2 {
Inner1 in=new Inner1();
}

public static void main(String[] args) {
class A2{
A1 a=new A1(); // Compilation error
}
class A1{
int a1;
A2 a=new A2();
}
}
}
`

最佳答案

这是因为 A2 和 A1 是局部类,并且根据 The Java Language Specification ,第 6.3 节声明的范围:

The scope of a local class declaration immediately enclosed by a block (§14.2) is the rest of the immediately enclosing block, including its own class declaration.

由于范围是紧邻 block 的其余部分,因此您不能在其声明之前使用本地类。

内部类与其封闭类的一个实例相关联,并且可以访问封闭类的其他成员。

内部类是其封闭类的成员,作为内部类实例的对象存在于外部类的实例中。

可以看看Nested Classes tutorial

关于java - 局部内部类的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28861613/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com