lambda表达式提示变量错误:Variable used in lambda expression should be final or effectively final...

时间:2024-11-14 08:06:33

为什么80%的码农都做不了架构师?>>>   

lambda表达式提示变量错误:Variable used in lambda expression should be final or effectively final

注释掉第二行就ok

分析:根据语法,变量必须为final.但是a已经被修改了.

为什么 Lambda 表达式(匿名类) 不能访问非 final 的局部变量呢? 因为实例变量存在堆中,而局部变量是在栈上分配,Lambda 表达(匿名类) 会在另一个线程中执行。如果在线程中要直接访问一个局部变量,可能线程执行时该局部变量已经被销毁了,而 final 类型的局部变量在 Lambda 表达式(匿名类) 中其实是局部变量的一个拷贝。

参考:/lwwgtm/article/details/60478936