class Outer {
int o = 10;
class Inner {
int i = 20;
}
}
public class Demo {
public static void main(String args[]) {
Outer o = new Outer();
Outer.Inner oi = o.new Inner();
}
}
当我们通过外部类对象创建内部类对象时,它们如何在堆中相互关联?
最佳答案
基本上,编译器隐式创建一个构造函数,引用外部类,该外部类存储在隐藏字段中。所以你的代码有点是这样的:
class Outer {
int o = 10;
static class Inner {
private final Outer outer;
int i = 20;
Inner(Outer outer) {
this.outer = outer;
}
}
}
public class Demo {
public static void main(String args[]) {
Outer o = new Outer();
Outer.Inner oi = new Outer.Inner(o);
}
}
(请注意,我已将内部类转换为静态嵌套类。)
关于java - java内部类对象如何存在于内存堆中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22857744/