概述
在使用 java 中的 lambda 表达式时 如果试图修改外部变量 编译器会报错 Variable used in lambda expression should be final or effectively final 告诉我们 count 变量必须设置成 final 类型才可以让闭包来访问。
如果这时我们将 count 设置成 final 类型 结果编辑器又报错了 Cannot assign a value to final variable count 告诉我们 final 类型的变量在闭包里面不能被修改。
那该怎么办呢?
解决这里需要定义一个 Holder 类型 将需要修改的变量包装起来。
public class Holder T { private T value; public Holder() { public Holder(T value) { this.value value; public void value(T value) { this.value value; public T value() { return value; }使用
public static void main(String[] args) { Holder Integer count new Holder (0); List Integer list new ArrayList (); list.add(100); list.add(200); list.forEach(i - count.value(i)); System.out.println(count.value()); }
本文转自网络,原文链接:https://developer.aliyun.com/article/787311