dhb*_*lah 6 java closures inner-classes
可能重复: 不能引用在不同方法中定义的内部类中的非final变量
为什么java在内部匿名类中引用非final变量是不可能的?简单的答案是"因为它被禁止",但我想知道,为什么他们禁止这种有用的功能?也许Java缺乏某种能力,或者它是以"错误"的方式设计的.我想知道.
Mat*_*arz 3
原因是封闭方法返回后,局部变量不再存在。因此,在实例化匿名类时会创建该变量的副本。如果 Java 允许局部变量事后更改,则匿名类将只知道旧值。
Java 的做法与其他语言中已知的真正闭包相反。
归档时间:
14 年,5 月 前
查看次数:
605 次
最近记录: