gpt4 book ai didi

java - Lambda 表达式没有有效的 final 变量

转载 作者:行者123 更新时间:2023-11-29 08:26:05 27 4
gpt4 key购买 nike

<分区>

我读到 lambda 表达式使用的外部变量必须是最终的或实际上是最终的。例如,如果我尝试修改 Supplier 主体中的外部字符串值,编译器会阻止我,正如上面的定义。但是如果我使用外部 Pojo(修改它的属性 - 所以它的内部状态),那么它可以正常工作并否定上面的声明。

怎么来的?

package com.quicktutorialz.test;

import java.util.function.Supplier;

public class MainApplication {

public static void main(String[] args){

// MY NON-EFFECTIVELY-FINAL POJO
NamePojo namePojo = new NamePojo();
namePojo.setName("Luisa");

//MY LAMBDA
Supplier<String> supplier = () -> {
namePojo.setName("Alex"); //HOW IS THAT POSSIBLE?!?!
return "Hello " + namePojo.getName();
};

System.out.println(supplier.get());


}
}

class NamePojo {
String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com