你如何返回memberVariable(含對象)如何返回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
}
}
這些看起來像是相反的要求。該方法使用與存儲在成員字段中相同的對象(第一個要求),或者使用不同的對象(第二個要求)。在每種情況下,都違反了其他要求。 – 2013-04-04 21:36:29
我很難搞清楚你想要什麼......雖然我懷疑它已經在做你想做的了。 Java按值傳遞引用; 'notifyObservers(someObject)'不會創建'someObject'的副本(除非實際在''notifyObservers''實現中明確地創建一個副本)。 – 2013-04-04 21:36:37
你不知道。您不能複製副本而無法制作副本。不要過早優化。該副本可能不是問題。 – 2013-04-04 21:36:52