【发布时间】:2018-05-11 06:17:03
【问题描述】:
int count =0;
requestUserDto.getNodeIds().forEach(userNodeId->{
count++; // this statement shows error
// some another statements here
}
});
为什么count++ 显示错误
错误:
我在封闭范围内定义的局部变量必须是最终的或有效的最终
【问题讨论】:
-
好吧,正如错误消息所解释的,您不能在 lambda 表达式中修改局部变量。如果您想提及您正在尝试做的事情,也许我们可以建议一个替代方案。
-
例如,您可能会使用
AtomicInteger。 -
谢谢,但我知道另一种选择。我想知道为什么我们不能在 forEach 中改变值。在正常情况下,每个循环都可以正常工作
-
你通常可以重新排列你的代码,这样就不需要像这样的变量了。
-
这是一个示例,不是实际问题。只有我想知道为什么 lambdas 只允许有效的最终变量。