我有一个内部类(非静态),它在初始化时使用对封闭类的引用。内部类是否保持对封闭类的引用?必须内部类有对封闭类的引用吗?
class Enclosing {
class Inner {
private final ABC innerField = outerField.computeSomething();
}
private final XYZ outerField = something();
}
UPDATE
我非常清楚,一个可以参考外类Enclosing.this
。
但是,如果该类不使用引用,必须引用在编译后有吗?即使参考仅用于初始化,是否有必要?
它说什么内部类总是持有对外部类的引用?
它说的地方*永远*拥有参考 - 即使你从不使用它? –
仅供参考,我正在浏览JLS 8.1.3“内部类和外部实例”,但我没有在任何地方看到http://docs.oracle.com/javase/specs/jls/se7/html/jls -8.html#jls-8.1.3 –
所有内部类都是非静态的。请参阅JLS。 – EJP