gpt4 book ai didi

java - 在构造函数中使用 lambda 时的“this”引用转义

转载 作者:行者123 更新时间:2023-12-04 14:44:58 24 4
gpt4 key购买 nike

引用这个问题-

How does `this` reference to an outer class escape through publishing inner class instance?

如果我们用 lambda 或方法引用替换匿名类,这段代码为什么以及如何表现?

public class ThisEscape {
public ThisEscape(EventSource source) {
source.registerListener(e -> doSomething(e));
}
}

最佳答案

从技术上讲,创建匿名内部类或使用 lambda 并没有太大区别。 Lambda 不仅仅是语法糖果,它使 Java 一直能够做的事情更加突出、易于访问和不易出错。那就是您的代码受制于 the question you referred to 中描述的相同竞争条件。及其答案。

使用给定的代码构造,您无法保证在调用 doSomething 之前正确创建了 ThisEscape 的实例。

阅读 this answer 中链接的 javaspecialists.eu 时事通讯了解在什么情况下可能会出现问题。

关于java - 在构造函数中使用 lambda 时的“this”引用转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62625880/

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