内部类包含对其外部类实例的隐藏引用。如果没有其他引用,则该隐藏引用使外部类实例保持活动状态。
要查看实际效果,请获取以下源代码并进行编译:
public class Outer { public class Inner { }}现在使用java类检查工具
javap查看隐藏的参考:
$ javap -p Outer$InnerCompiled from "Outer.java"public class Outer$Inner { final Outer this$0; public Outer$Inner(Outer);}您将看到有一个名为
this$0type 的包范围隐藏引用
Outer-这是我在上面讨论的引用。



