内部类必须引用封闭的类吗?

Mic*_*uff 0 java inner-classes

我有一个内部类(非静态),它在初始化时使用对封闭类的引用.内部类现在会保留对封闭类的引用吗?

class Enclosing {
  class Inner {
    private final ABC innerField = outerField.computeSomething();
  }

  private final XYZ outerField = something();
}
Run Code Online (Sandbox Code Playgroud)

UPDATE

我非常清楚,一个可以参考的外部类Enclosing.this.

但是,如果类不使用引用,编译后是否必须引用?即使引用仅用于初始化,是否有必要?

它在哪里说内部类总是持有外部类的引用?

ste*_*vls 8

非静态嵌套类始终包含对封闭类的引用.在您的示例中,您可以从Inneras 引用封闭类Enclosing.this.

JLS 8.1.3"内部类和封闭实例":

"类O的直接内部类C的实例i与O的实例相关联,称为i的直接封闭实例.对象的直接封闭实例(如果有)在创建对象时确定( §15.9.2)."