如何返回memberVariable(Object)并重置它而不重置之前返回的成员变量?

时间:2013-04-04 21:33:43

标签: java

如何返回memberVariable(包含Object)

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

然后重置成员变量

  • 没有覆盖返回的成员变量的对象,观察者获得之前的“副本”?

这是一个示例代码:

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
  }

}

1 个答案:

答案 0 :(得分:3)

您已经完成了所需的代码。

this.notifyObservers(someObject)

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

this.someObject = new Object();

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