【发布时间】:2017-03-03 04:08:15
【问题描述】:
我刚刚看到this question,显然Java 应该拒绝访问lambda 表达式主体内的非最终变量。为什么?
编辑:例如,我不明白为什么下面的代码是有害的:
String[] numbers = new String[10]; // put some numerical strings in
BigInteger sum = new BigInteger("0");
numbers.forEach(n -> sum = sum.add(new BigInteger(n)));
【问题讨论】:
-
我认为如果你声明“本地非最终变量”更容易理解。例如。在方法中声明的变量。
-
@n247s 在方法里面?在 lambda 函数内部,还是在包含它的方法中?
-
因为 lambda 的持续时间可能比封装它的块长。
-
@Jerfov2 lambda 是异步的吗?
-
@Bluefire 对不起,我不明白你的问题