gpt4 book ai didi

java - Lambda 捕获与非捕获

转载 作者:搜寻专家 更新时间:2023-11-01 01:39:42 24 4
gpt4 key购买 nike

你能解释一下为什么第一个 lambda 正在捕获而第二个没有。

   Runnable createLambdaWithCapture() {
return System.out::println;
}
Runnable createLambdaWithApparentCapture() {
return () -> System.out.println();
}

最佳答案

第一个片段正在捕获,因为它在执行 return 语句时评估 System.out捕获要使用的相应对象引用在其 Runnable#run 实现中。

第二个代码片段生成一个 Runnable 实例,该实例未被捕获,因为 System.out 仅在该实例的 run 方法被调用后才被评估。自执行 return 语句后,它可能已经改变。

关于java - Lambda 捕获与非捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54429334/

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