我很好奇以下代码为何有效(肯定不是最佳实践),因为我一直认为在这种情况下,lambda中的变量(order)
需要是final或至少是有效的final。那么如何增加每个参考的订单价值呢?裁判所载数字递增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));
}
}
第一个示例为何起作用的任何指针?