我有一個內部類(非靜態),它在初始化時使用對封閉類的引用。內部類是否保持對封閉類的引用?必須內部類有對封閉類的引用嗎?
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