<分区>
Possible Duplicate:
Cannot refer to a non-final variable inside an inner class defined in a different method
为什么在 java 中不能在内部匿名类中引用非最终变量?简单的回答是“因为它被禁止”,但我想知道,为什么他们禁止这个有用的功能?也许 Java 缺乏某种能力,或者它以“错误”的方式设计。我想知道。
<分区>
Possible Duplicate:
Cannot refer to a non-final variable inside an inner class defined in a different method
为什么在 java 中不能在内部匿名类中引用非最终变量?简单的回答是“因为它被禁止”,但我想知道,为什么他们禁止这个有用的功能?也许 Java 缺乏某种能力,或者它以“错误”的方式设计。我想知道。
最佳答案
原因是封闭方法返回后,局部变量不存在了。因此,在实例化匿名类时会创建变量的副本。如果 Java 允许之后更改局部变量,则匿名类将只知道旧值。
Java 的做法与真正的相反 closures从其他语言中知道。
关于java - 为什么在 Java 中不可能在内部匿名类中引用非最终变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6662817/