Can it remove itself from that Observerlist?
I think there is no need of deleting the observer because now observer will never publish any event but still you can remove it as shown in below code.
Whenever you create a
ObserverC
object pass theObservableB
so thatObservableB
can observer it.Now when
ObserverC
is closed then just delete the observer from theObservableB
Note: Read inline comments.
Sample code
class JFrameA extends JFrame {
ObservableB b;
public void add() {
ObserverC c = new ObserverC(b);
}
}
class ObservableB extends Observable {
}
class ObserverC extends JFrame implements Observer {
public ObserverC(final Observable observable) {
// observer is added
observable.addObserver(this);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosed(WindowEvent arg0) {
// observer is deleted
observable.deleteObserver(ObserverC.this);
}
});
}
@Override
public void update(Observable arg0, Object arg1) {
...
}
}