mal*_*ibu 0 java final anonymous-function
为什么 Java 允许这样做,
class Test {
boolean a;
public void test() {
...
object.method(e -> a = true);
}
}
Run Code Online (Sandbox Code Playgroud)
但不是这个,
class Test {
public void test() {
boolean a;
...
object.method(e -> a = true);
}
}
Run Code Online (Sandbox Code Playgroud)
对于第二个示例,它抛出:
local variables referenced from a lambda expression must be final or effectively final
第二个例子的唯一区别是变量是在方法内部而不是类本身声明的。我是 Java 编程的初学者,我是否遗漏了一些明显的东西?
第一个例子有效,因为a = true它实际上是 的简写this.a = true,并且this总是final(Java 规范如此说)。
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |