前几天使用lamdba时,报了一个这个错,原因是在lamdba体中使用了一个变量,觉得很奇怪! 今天在读这本书的时候,又看到了这个解释,这里有了更深刻的理解,总结一下: 在jdk1.8之前在使用匿名内部类的时候方法里面的变量必须需要加final 否则是会报错的,但是jdk1.8放松了这个限制,可以使用非final修饰,但是这个变量,是不允许另外赋值的,否则lamdba体重也会报错,如图: 换句话说,Lambda 表达式引用的是值,而不是变量.所以在lamdba和匿名内部类中使用变量不能被改变 如…