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); } }