繁体   English   中英

当地内部阶级的顺序

[英]Order of local inner class

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

`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是本地类,并且根据Java语言规范 ,第6.3节声明的范围:

由块(第14.2节)直接包含的本地类声明的范围是直接封闭块的其余部分,包括它自己的类声明。

由于范围是直接封闭块的其余部分,因此在声明之前不能使用本地类。

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

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

您可以查看嵌套类教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM