2 回答
![?](http://img1.sycdn.imooc.com/545868330001e54e02200220-100-100.jpg)
TA贡献1860条经验 获得超8个赞
如果要访问和修改lambda表达式中的变量,请将其定义为类/实例变量。有一个真正的症结所在,您不应该排除该错误。
Gobbledygook还是一个简单的例子,
interface Q {
void fun();
}
class ABC {
public static boolean x = false; // class variable
public static void b(Q q) {
q.fun();
}
public static void main(String[] args) {
Q a = () -> {
System.out.println("run simple lambda");
x = true;
};
b(a);
System.out.println(x);
}
}
![?](http://img1.sycdn.imooc.com/54584d560001571a02200220-100-100.jpg)
TA贡献1802条经验 获得超10个赞
使用java.util.concurrent.atomic.AtomicBoolean实用程序类。它们持有对值的原子线程安全引用。
import java.util.concurrent.atomic.AtomicBoolean;
// Outside of lambda, instantiate the atomic boolean reference
AtomicBoolean ref = new AtomicBoolean(); // Constructor parameter optional: empty (false) / true / false
// Inside lambda, use the getters and setters
ref.set(true); // or: ref.set(false);
添加回答
举报