为什么 Lambda 表达式(匿名类) 不能访问非 final 的局部变量呢?

这里记一个知识点

Lambda 表达式(匿名类) 不能访问非 final 的局部变量

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

你可能感兴趣的:(Java,java,lambda,java-ee)