说中文Variable used in lambda expression should be final or effectively final
时间: 2023-10-19 13:31:52 浏览: 148
编译器说 Lambda 表达式中的变量必须是 final 的,我偏不信
lambda表达式中使用的变量应该是final或者 effectively final。
在lambda表达式中使用的变量必须是不可变的(final)或者被隐式地当作final使用。这是由于lambda表达式的实现方式和作用域规则决定的。
如果你在lambda表达式中使用一个非final的变量,会导致编译错误。为了解决这个问题,你需要将该变量声明为final,或者保证它在lambda表达式中没有被修改(effectively final)。
一个变量被视为 effectively final,是指在它的生命周期内,它的值没有发生过改变。这意味着虽然你没有显式地将变量声明为final,但编译器仍然会将其视为final。
这样做的原因是为了保证在lambda表达式中访问的变量是不可变的,以避免潜在的线程安全问题和语义上的困惑。
阅读全文