gpt4 book ai didi

java - 从异步运行的 lambda 访问方法参数

转载 作者:行者123 更新时间:2023-11-30 10:12:04 27 4
gpt4 key购买 nike

我所知道的:只有 final 或有效的 final 局部变量可以从 lambda 内部访问。 static 变量也可以访问,也可以修改。

我不知道的是:为什么这段代码没有抛出异常?

public static String sampleFunction(String param1, int param2) {
new Thread(() -> {
try { Thread.sleep(100000); } catch (InterruptedException e) { }
// accessing method parameter here...
String _param1 = param1;
System.out.println(_param1);
}).start();

return "";
}

public static void Main(String[] arguments) {
sampleFunction("to print", 9);
System.out.println("function returned");
}

考虑到这一点,参数在返回时被释放这发生在尝试从异步运行的 lambda 表达式内部访问它们之前,为什么它不抛出 Exception?我测试了代码,编译了,有趣的是,“returned”消息比“to print”更早打印出来。这意味着我可以在方法返回后访问方法参数。

最佳答案

代码不会抛出异常,因为 param1 实际上是最终的。 Java Lambda 类似于闭包。

关于java - 从异步运行的 lambda 访问方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52068006/

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