6
我试图改变java8 forEach循环内的布尔变量为true,这是非最终的。但是我得到以下错误:在封闭范围内定义的本地变量必须是最终的或有效的最终。Java8有效最终编译时间错误非最终变量
如何解决此错误?
代码:
boolean required = false;
这是我在函数创建的变量。
现在,当我试图去改变它:
map.forEach((key, value) -> {
System.out.println("Key : " + key + " Value : " + value);
required = true;
});
我得到的错误:在一个封闭的范围局部变量需要定义必须是最后的或有效的决赛。
为什么会出现此错误以及如何解决?
像这样:最肮脏的方式:声明一个元素的数组:[]需要布尔= {假};并设置此元素:required [0] = true; 我其实想要做的事情,但你说它看起来很脏。是否有任何其他方式来更改lambda表达式中的局部变量@tagirValeev –
@Siddharth,实际上没有办法改变局部变量。在'boolean [] required'的情况下,你不改变局部变量,而是改变堆对象。 –
为了增强我的知识,可以请你解释一下你通过改变头对象而不是改变局部变量来实际上是什么意思。 @tagirValeev –