为什么 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 编程的初学者,我是否遗漏了一些明显的东西?