当我们定义内部类时,我理解使用外部类访问static
内部类,并且使用外部类的实例存在内部成员类。
令人困惑的是,如果我想持有non-private
内部成员类的实例,那么变量声明就像:
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
外部类如何能像这样引用内部成员类?这里发生了什么?
示例代码:
public class NestedClasses {
public static void main(String[] args) {
A.B b = new A().new B(); // <- How A is directly accessing B, B is not defined as static.
A.StaticClass staticClass = new A.StaticClass();
}
}
class A {
static int x;
int y;
A() {
System.out.println(this.getClass().getName());
}
static class StaticClass {
StaticClass() {
System.out.println(this.getClass().getName());
}
}
class B {
B() {
System.out.println(this.getClass().getName());
}
}
}