我正在尝试将java8 forEach循环中的布尔变量更改为true,这是非final.但是我遇到了以下错误:在封闭范围内定义的局部变量必须是最终的或有效的最终.
如何解决此错误?
代码:
boolean required = false;
Run Code Online (Sandbox Code Playgroud)
这是我在函数中创建的变量.
现在,当我试图改变它时:
map.forEach((key, value) -> {
System.out.println("Key : " + key + " Value : " + value);
required = true;
});
Run Code Online (Sandbox Code Playgroud)
我收到错误:在封闭范围内定义的本地变量必须是最终的或有效的最终.
为什么会出现此错误以及如何解决?
我有一个方法,效果很好。这就是它的样子。
private boolean roomWithMoreThanTenFurnitures(Building building) {
if (building != null && building.hasRooms()) {
for (Room room : building.getRooms()) {
if (room.getFurnitures.size() > 10) {
return true;
}
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我想把它切换到 Lambda。uo 是用 shell 进来的,但是我不知道外面如何填写 if(条件) return true 或 return false。
building.getRooms().forEach(room -> {
//??
});
Run Code Online (Sandbox Code Playgroud)