【发布时间】:2015-06-18 02:22:57
【问题描述】:
Outer outer = new Outer();
Outer 的一个 Object 类在堆上创建,并且引用变量指向它。
如果我写的时候理解正确
Outer.Inner inner=outer.new Inner();
Inner 类的对象在堆上创建,inner 指向它。在堆中,我们有两个独立的对象,它们包含自己的实例变量。
但如果我写
Outer.Inner inner=new Outer().new Inner();
仍然会在堆上创建两个Object,一个用于Outer,另一个用于Inner。但是参考inner 只有Inner Object's 成员是可访问的。谁指的是堆上的外部Object?如果它没有被任何引用引用,那么它应该有资格进行垃圾收集,这将影响inner 的使用。
【问题讨论】:
标签: java inner-classes