Sum*_*sai 0 java accessibility nested-class inner-classes
我有一个关于成员内部类的顶级类的可访问性的查询.我刚刚读到了本地或匿名内部类只能访问最终变量的原因.原因是JVM将这两个类作为完全不同的类处理,因此,如果一个类中的变量值发生变化,则无法在运行时反映出来在另一个类文件中的时间.
然后,我的问题是内部成员类(非静态)如何能够访问顶级类成员的成员,因为JVM仍然将这两个类视为不同的类文件?如果顶级类的成员变量的值发生变化,那么如何在运行时反映内部类的类文件呢?
它们是单独的类,但是对"内部"类中的"外部"类的实例有隐式引用.它基本上充当变量,您可以隐式或通过特殊语法获取ContainingClassname.this.
请注意,如果您不想要这样的隐式引用,则应将嵌套类声明为static:
public class Outer
{
private class Inner
{
// There's an implicit reference to an instance of Outer in here.
// For example:
// Outer outer = Outer.this;
}
private static class Nested
{
// There's no implicit reference to an instance of Outer here.
}
}
Run Code Online (Sandbox Code Playgroud)