问题描述
为什么Java允许这样做,
value
但不是这个
class Test {
boolean a;
public void test() {
...
object.method(e -> a = true);
}
}
对于第二个示例,它抛出:
class Test {
public void test() {
boolean a;
...
object.method(e -> a = true);
}
}
第二个示例中的唯一区别是变量是在方法内部而不是类本身声明的。我是Java编程的初学者,我缺少明显的东西吗?
解决方法
第一个示例有效,因为a = true
实际上是this.a = true
的简写,而this
始终是final
(因此Java规范如此)。