java - 局部内部类是否在定义它们的范围内维护所有局部变量的副本?

标签 java inner-classes final local-variables anonymous-inner-class

本地内部类(我认为包括匿名类)是否维护在定义这些本地内部类的方法范围内定义的所有变量的副本?

这是因为如果局部内部类使用局部变量并且方法超出范围而内部类对象仍然存在,则该对象将使用不再存在的东西。

但是这个说法是真的吗?官方文档中有提到吗?

这是this answer的后续问题.我在那里发表了评论,但没有得到回复,我认为这也是一个不同的问题,所以在这里提问。

最佳答案

不,本地内部类不“保留副本”,但它们可以引用 final 或者,因为 , effectively final方法中的局部变量。

更阴险的是,他们保留对实例的引用,这可能会导致内存泄漏。

关于java - 局部内部类是否在定义它们的范围内维护所有局部变量的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37376497/

相关文章:

java - 在 (*) 中可以访问多少个不同版本的 'x'?

java - 更改需要声明为final的局部变量的值

java - 可以在编译时评估表达式吗?

java - Android:检查一个复选框会检查同一行中的所有复选框

java - JAX-WS 返回一个复杂的对象?

java - 在 Java 中,嵌套类与其外部类之间的关系是什么?

android - 当使用 foreach 循环遍历 arraylist 不使实例成为最终实例时,是否有解决方法?

java - 用 Java 解析 XML 文件以获取名称列表

java - java中的Base64解码子字符串

kotlin - 内部类中的嵌套类