lambda - 如何在 lambda 中使用无效的最终变量
问题描述
我很好奇为什么下面的代码是有效的(肯定不是最佳实践),因为我一直认为在这种情况下(order)
lambda 中的变量需要是最终的,或者至少是有效的最终的。那么如何增加每个 ref 的 order 值呢?ref 包含不断增加的数字 0, 10, 20, ...
public class A {
private int order = 0;
public void addOrder() {
this.order = 0;
getRefsSomewhere().stream().forEach(ref -> updateRef(ref, order+=10));
}
}
如果我只是稍微改变它就不再编译(如预期的那样)
public class A {
public void addOrder() {
int order = 0;
getRefsSomewhere().stream().forEach(ref -> updateRef(ref, order+=10));
}
}
为什么第一个示例有效的任何指示?
解决方案
推荐阅读
- javascript - 在循环中添加超时以显示画布中的更改
- python - OpenCV 斑点检测和计数
- python - 我在子菜单中有嵌套的函数,这些函数没有按我的意愿工作
- python - 分组一个numpy数组
- typescript - TypeScript 和 TypeScript SDK 的区别
- image - 哪个更好的不可点击或可点击的图像
- python - 字典从函数返回空
- asp.net - 在 Visual Studio 中调试网站后 SQL Server 速度变慢
- r - 处理新的动态数据框时如何永久保存列类型的更改
- java - @PrePersist 被触发,@PostLoad 未被触发