今天我想做一些我想完成的项目,我得到一个异常,我无法从lambda表达式引用局部变量。 我有一个方法,我给出两个值和方法检查,如果值对已经在HashMap
public void METHOD_NAME(Value value1, Value value2) {
boolean founded = false;
//values is the name of the HashMap
this.values.forEach((value1Map, value2Map) -> {
if(value1Map == value1&&value2Map == value2){
this.doSomeStuff();
founded = true;
}
});
}
当它完成时我想要读出布尔值,需要知道他是否能够找到它 established = false; 我怎么能在这个lambda中成立,还是有其他方法可以做到这一点?
答案 0 :(得分:0)
您可以在lambda中使用基元的原子变体。取代
boolean founded = true
由此
final AtomicBoolean found = new AtomicBoolean(false);
并将其设置在lambda中,如此
found.set(true);
顺便说一下,绝对不能用lambda替换每次迭代。在某些情况下,for循环仍然有效并且优于lambdas。
我已将成立更改为找到,正如Tom在您的问题评论中指出的那样。此外,您应该验证是否要与==
进行比较而不是equals