gpt4 book ai didi

java - 如何返回一个memberVariable(对象)并重置它而不重置之前返回的成员变量?

转载 作者:行者123 更新时间:2023-12-01 23:54:24 25 4
gpt4 key购买 nike

如何返回memberVariable(包含对象)

  • 无需低效复制(在内存中复制)成员变量的对象

然后重置成员变量

  • 不覆盖返回的成员变量的对象,以便观察者获取之前的“副本”?

这是一个示例代码:

public class SomeClass extends Observable {

private Object someObject;

private void whenSomethingHappens() {
this.setChanged();
this.notifyObservers(someObject); // TODO: return the object without copying it in RAM
this.someObject = new Object(); // TODO: create a new empty object somwhere else in RAM such as it doesn't override the returned object of before
}

}

最佳答案

您已有的代码已完成您想要的操作。

this.notifyObservers(someObject)

这将对 someObject 的引用传递给方法 notifyObservers。没有创建新对象,因此没有使用额外的内存(除了创建对现有对象的额外引用之外)。

this.someObject = new Object();

这会在内存中创建一个新对象,然后覆盖引用someObject。如果 notifyObservers 存储了对原始对象的引用,则它不受这行代码的影响。

关于java - 如何返回一个memberVariable(对象)并重置它而不重置之前返回的成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822143/

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