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

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

lambda表达式提示变量错误:Variable used in lambda expression should be final or effectively final..._第1张图片

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

注释掉第二行就ok

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

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

参考:https://blog.csdn.net/lwwgtm/article/details/60478936

转载于:https://my.oschina.net/GJB/blog/2877153

你可能感兴趣的:(lambda表达式提示变量错误:Variable used in lambda expression should be final or effectively final...)