java - 为什么在 Java 中不可能在内部匿名类中引用非最终变量?

标签 java closures inner-classes

<分区>

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/

相关文章:

java - 如何在另一个类中使用来自一个类的 Action Listener 的目录路径变量?

javascript - 如何更改闭包中捕获的函数定义

Groovy:如何从另一个闭包调用顶级范围内的闭包

c++ - 什么时候公共(public)/私有(private)的排序不是一种风格选择?

java - Java 内部类

java - 如何使用 Java 从 Azure AD 导入用户

java - 在 Android Studio 中的类上执行 Junit 测试,无需初始化移动设备/模拟器

java - 在不使用 JStack 的情况下从卡住的 Java 应用程序获取线程转储

javascript - 请解释闭包,或将循环计数器绑定(bind)到函数范围

作为内部类的 Android Activity