I just saw this question, and apparently it's obvious that Java should deny access to non-final variables inside the body of a lambda expression. Why?
Edit: for example, I don't see why the following code is harmful:
String[] numbers = new String[10]; // put some numerical strings in
BigInteger sum = new BigInteger("0");
numbers.forEach(n -> sum = sum.add(new BigInteger(n)));