java – Lambdas:局部变量需要final,实例变量不需要 - 代码日志

java – Lambdas:局部变量需要final,实例变量不需要

在lambda中,局部变量需要是final,但实例变量不是。为什么这样?
字段和局部变量之间的根本区别在于,当JVM创建一个lambda实例时,会复制局部变量。另一方面,字段可以自由地改变,因为它们的变化也被传播到外部类的实例(它的范围是整个外部类,如鲍里斯在下面指出的)。

关于匿名类,闭包和labmdas的最简单的方法是从可变范围的角度出发,想象一个复制构造函数为您传递给关闭的所有局部变量添加。

http://stackoverflow.com/questions/25055392/lambdas-local-variables-need-final-instance-variables-dont

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – Lambdas:局部变量需要final,实例变量不需要