在lambda中如何使用无效的最终变量

时间:2018-07-06 12:26:32

标签: lambda java-8

我很好奇以下代码为何有效(肯定不是最佳实践),因为我一直认为在这种情况下,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));
  }
}

第一个示例为何起作用的任何指针?

0 个答案:

没有答案