I\'m trying to change the boolean variable inside java8 forEach loop to true which is non final. But I\'m getting following error : Local variable required defined in an enc
You cannot change the local variable from the body of lambda expression. There are several ways to overcome this:
In this particular case you can just set boolean required = !map.isEmpty();
without any lambda expression. If you want to set it based on some condition, you can use the Stream API:
boolean required = map.entrySet().stream().anyMatch(entry -> ...);
This solution is the most preferred.
Convert the required
variable to the field of the enclosing class.
boolean[] required = {false};
and set this element instead: required[0] = true;