代码之家  ›  专栏  ›  技术社区  ›  user5549921

通过引用传递到setter

  •  1
  • user5549921  · 技术社区  · 7 年前

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

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

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

    设置了吗 this.obj 到的新实例 obj ,或引用 obj公司 ?

    此外,它是否在 每一个 或是否存在可能发生其中一种情况的特定情况?我想试试,但不知道从哪里开始,也不知道会发生什么情况。

    最后,在多线程中,是否有任何变化,或者它仍将以相同的方式传递?只是好奇说实话。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Eran    7 年前

    setOBJ(Object obj) 指定的引用 Object this.obj . 它不会创建新实例。

    另一方面,每次创建 Test ,一个新的 对象 实例也会被创建并分配给 obj (由于 Object obj = new Object(); ).

    问题是你打了多少次电话 setOBJ ,以及您是否每次向其传递一个新的 对象 例子我们无法从你发布的代码判断。