Effectively Final 变量

Effectively Final 变量

如果在lambda表达式中引用了non-final变量,则会报错。

effectively final是什么意思呢?这个是一个近似final的意思。只要一个变量只被赋值一次,那么编译器将会把这个变量看作是effectively final的。

 
    String localVariable = "Local";
    Usage usage = parameter -> {
         localVariable = parameter;
        return localVariable;
    };

上面的例子中localVariable被赋值了两次,从而不是一个Effectively Final 变量,会编译报错。

为什么要这样设置呢?因为lambda表达式通常会用在并行计算中,当有多个线程同时访问变量的时候Effectively Final 变量可以防止不可以预料的修改。

 
posted @ 2023-06-05 15:07  r1-12king  阅读(35)  评论(0编辑  收藏  举报