0

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
  }

}
4

1 に答える 1

3

あなたがすでに持っているコードは、あなたが望むことをします。

this.notifyObservers(someObject)

これにより、 someObject への参照が method に渡されnotifyObserversます。新しいオブジェクトは作成されていないため、(既存のオブジェクトへの追加の参照を作成する以外に) 追加のメモリは消費されていません。

this.someObject = new Object();

これにより、メモリ内に新しいオブジェクトが作成され、参照が上書きされますsomeObjectnotifyObservers元のオブジェクトへの参照が格納されている場合、このコード行の影響を受けません。

于 2013-04-04T21:40:52.237 に答える