あるプログラマの日記

プログラマのメモ、出来事、考えたこと、勉強とかの雑記

java.util.ObservableのaddObserver()メソッド

開発中のプログラムで、既に登録済みのObserverを、addObserver()メソッドで再度、登録する部分を、発見して、修正しようかと思ったが、既にテストフェーズなので、問題なければ修正はしたくない。


修正しなくとも問題ないか、java の Observableクラスのソースファイルを見てみた。
ソースファイルで、確認すると、ObservableのメンバーフィールドVector obs へObserverのオブジェクトを追加する際、contains()メソッドでObserverのオブジェクトをチェックして、falseの場合、つまり要素としてobsに含まれていない場合にだけ追加している。


Observableに登録されるObserverは、既に追加されている場合は重複して追加されない。開発中のプログラムを修正しなくて済みそうだ。

    public synchronized void addObserver(Observer o) {
        if (o == null)
            throw new NullPointerException();
	if (!obs.contains(o)) {
	    obs.addElement(o);
	}
    }