gpt4 book ai didi

java - 通过引用传递给 setter

转载 作者:行者123 更新时间:2023-12-02 11:52:15 26 4
gpt4 key购买 nike

因此,我在 Swing 程序上遇到了一些非常大的内存和 CPU 泄漏,并意识到我并没有在 EDT 上执行绝对必要的所有内容,但愚蠢到将所有内容传递到方法中,最终意识到我是由于“按值传递”规则,复制对象及其 2000 个数组。

我的问题是,对于以下代码:

public class Test {
Object obj = new Object();
public void setOBJ(Object obj) {
this.obj = obj;
}
}

它将 this.obj 设置为 obj 的新实例,还是对 obj 的引用?

此外,它是否在每种情况下都会这样做,或者是否在某些情况下可能会发生其中一种情况?我想尝试一下,但不知道从哪里开始以及什么情况下可能会发生。

最后,在多线程中,有什么变化吗,还是仍然会以同样的方式传递?说实话只是好奇。

最佳答案

setOBJ(Object obj)Object 的引用分配给 this.obj。它不会创建新实例。

另一方面,每次创建 Test 的新实例时,也会创建一个新的 Object 实例并将其分配给 obj (由于 Object obj = new Object();)。

问题是您调用 setOBJ 次数,以及每次是否向其传递一个新的 Object 实例。我们无法通过您发布的代码来判断。

关于java - 通过引用传递给 setter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47810883/

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