To observe an observable object, you must implement the Observer interface. This interface defines only the one method shown here:
void update(Observable observOb, Object arg)
Here, observOb is the object being observed, and arg is the value passed by notifyObservers( ). The update( ) method is called when a change in the observed object takes place
Demonstrate the Observable class and the Observer interface
import java.util.*;
//This is the observing class. class Watcher implements Observer {
public void update(Observable obj, Object arg) { System.out.println("update() called, count is " +
((Integer)arg).intValue());
}
}
/This is the class being observed. class BeingWatched extends Observable {
void counter(int period) { for( ; period >=0; period--) {
setChanged();
notifyObservers(new Integer(period)); try {
Thread.sleep(100);
}catch(InterruptedException e) {
System.out.println("Sleep interrupted");
}
}
}
}
class ObserverDemo {
public static void main(String args[]) { BeingWatched observed = new BeingWatched(); Watcher observing = new Watcher();
/* Add the observing to the list of observers for observed object. */
observed.addObserver(observing);
observed.counter(10);
}
}
The output from this program is shown here:
update() called, count is 10 update() called, count is 9 update() called, count is 8 update() called, count is 7 update() called, count is 6 update() called, count is 5 update() called, count is 4 update() called, count is 3 update() called, count is 2 update() called, count is 1 update() called, count is 0