Java内部类和静态嵌套类-二进制差异



选择一种设计而不是另一种设计有很多原因,在这里可以找到非常好的答案:

  • Java内部类和静态嵌套类

我很好奇通过常规类选择静态内部类时,是否存在任何性能或内存/存储差异。

编译后的差异看起来如何

需要明确的是,这个问题不是关于在每种情况下使用什么的建议。我只想了解Java是如何在幕后工作的

静态嵌套类是最简单的形式:它的工作方式就像顶级类一样,唯一的区别是声明它的范围。那里什么都没藏。

非静态嵌套类具有对封闭类实例的隐藏引用,这就是为什么可以从内部类内部引用封闭类的非静态字段。

当您在方法中定义匿名类时,您还将拥有在方法中声明并从匿名类中引用的所有局部变量的副本。如果该方法是非静态的,那么您还将拥有对封闭类的隐藏引用。

最新更新