我有一个内部类(非静态),它在初始化时使用对封闭类的引用。内部类现在会保留对封闭类的引用吗?
class Enclosing {
class Inner {
private final ABC innerField = outerField.computeSomething();
}
private final XYZ outerField = something();
}
UPDATE
我非常清楚这一点can引用外部类Enclosing.this
.
但是,如果该类不使用引用,must编译后有参考吗?即使引用仅在初始化时使用,是否有必要?
哪里说内部类always持有对外部类的引用?
非静态嵌套类always保存对封闭类的引用。在您的示例中,您可以引用封闭类Inner
as Enclosing.this
.
JLS 8.1.3“内部类和封闭实例” http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.1.3:
“类 O 的直接内部类 C 的实例 i 与 O 的实例关联,称为 i 的直接封闭实例。对象的直接封闭实例(如果有)在创建对象时确定( §15.9.2)。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)