advertisement
Login | Register   
  Include Code  Search Tips
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Partners & Affiliates
advertisement
advertisement
Tip of the Day
Average Rating: 3.3/5 | Rate this item | 34 users have rated this item.
Expertise: Advanced
Language: Java
November 29, 2004
Use java.util.Observable to Monitor Object State changes
The Java API provides a class called java.util.Observable which can be extended by any Java class. The child class can then be an "observable" class and other objects can "observe" changes in state of this object.

The class that performs the "observing" must implement the java.util.Observer interface. There is a single method:


public void update(Observable obj, Object arg)
This method is called whenever the observed object is changed. An application calls an Observable object's notifyObservers method to have all the object's observers notified of the change.

In the following example, a Manager observes an Employee. Suppose a change in salary occurs in Employee. It then notifies the observers using setChanged() and notifyObservers(). Manager's update() method is called to inform him that Employee has changed.


public class Employee extends Observable{
float salary;
public setSalary(float newSalary){
salary=newSalary; // salary has changed
setChanged(); // mark that this object has changed, MANDATORY
notifyObservers(this, new Float(salary)); // notify all observers, MANDATORY
}
}
public class Manager implements Observer{
public void update(Observable obj, Object arg){
System.out.println("A change has happened and new salary is " + arg);
}
}
public class Demo(){
public static void main(String[] args){
Employee e = new Employee();
Manager m = new Manager();
e.addObserver(m); // register for observing
}
}
Amit Tuli
If you have a hot tip and we publish it, we'll pay you. However, due to accounting overhead we no longer pay $10 for a single tip submission. You must accumulate 10 acceptable tips to receive payment. Be sure to include a clear explanation of what the technique does and why it's useful. If it includes code, limit it to 20 lines if possible. Submit your tip here.
Please rate this item (5=best)
 1  2  3  4  5
advertisement
advertisement