Java Observable deleteObserver(Observer o) Method



Description

The Java Observable deleteObserver(Observer o) method deletes the specified observer o from the set of observers of this object.

Declaration

Following is the declaration for Java.util.Observable.deleteObserver(Observer) method

public void deleteObserver(Observer o)

Parameters

o − The observer to be deleted from the set of observers.

Return Value

NA

Exception

NA

Deleting Observer for String Value Change Example

The following example shows the usage of java.util.Observable.deleteObserver() method. We've created an ObservedObject class by extending Observable class and then overridden its method setValue(). In main class, We've added the observers using addObserver() method. Then using deleteObserver() method, we're deleting an Observer added and in output, we've printed the updates happening to the value of ObservedObject.

package com.tutorialspoint;

import java.util.Observable;
import java.util.Observer;

class ObservedObject extends Observable {
   private String watchedValue;
   
   public ObservedObject(String value) {
      watchedValue = value;
   }
   
   public void setValue(String value) {
      
      // if value has changed notify observers
      if(!watchedValue.equals(value)) {
         System.out.println("Value changed to new value: "+value);
         watchedValue = value;

         // mark as value changed
         setChanged();

         // trigger notification
         notifyObservers(value);
      }
   }
}
public class ObservableDemo implements Observer {
   public static void main(String[] args) {
      
      // create watched and watcher objects
      ObservedObject watched = new ObservedObject("Original Value");
      
      // watcher object listens to object change
      ObservableDemo watcher = new ObservableDemo();

      // trigger value change
      watched.setValue("Value before addObserver");
      
      // add observer to the watched object
      watched.addObserver(watcher);
      
      // trigger value change
      watched.setValue("Value after addObserver");
      
      // delete observer
      watched.deleteObserver(watcher);
      
      // trigger value change
      watched.setValue("Value after deleteObserver");
   }
   
   public void update(Observable obj, Object arg) {
      System.out.println("Update called with Arguments: "+arg);
   }
}

Let us compile and run the above program, this will produce the following result −

Value changed to new value: Value before addObserver
Value changed to new value: Value after addObserver
Update called with Arguments: Value after addObserver
Value changed to new value: Value after deleteObserver

Deleting Observer for Integer Value Change Example

The following example shows the usage of java.util.Observable.deleteObserver() method. We've created an ObservedObject class by extending Observable class and then overridden its method setValue(). In main class, We've added the observers using addObserver() method. Then using deleteObserver() method, we're deleting an Observer added and in output, we've printed the updates happening to the value of ObservedObject.

package com.tutorialspoint;

import java.util.Observable;
import java.util.Observer;

class ObservedObject extends Observable {
   private Integer watchedValue;
   
   public ObservedObject(Integer value) {
      watchedValue = value;
   }
   
   public void setValue(Integer value) {
      
      // if value has changed notify observers
      if(!watchedValue.equals(value)) {
         System.out.println("Value changed to new value: "+value);
         watchedValue = value;

         // mark as value changed
         setChanged();

         // trigger notification
         notifyObservers(value);
      }
   }
}
public class ObservableDemo implements Observer {
   public static void main(String[] args) {
      
      // create watched and watcher objects
      ObservedObject watched = new ObservedObject(1);
      
      // watcher object listens to object change
      ObservableDemo watcher = new ObservableDemo();

      // trigger value change
      watched.setValue(2);
      
      // add observer to the watched object
      watched.addObserver(watcher);
      
      // trigger value change
      watched.setValue(3);
      
      // delete observer
      watched.deleteObserver(watcher);
      
      // trigger value change
      watched.setValue(4);
   }
   
   public void update(Observable obj, Object arg) {
      System.out.println("Update called with Arguments: "+arg);
   }
}

Let us compile and run the above program, this will produce the following result −

Value changed to new value: 2
Value changed to new value: 3
Update called with Arguments: 3
Value changed to new value: 4

Deleting Observer for Object Value Change Example

The following example shows the usage of java.util.Observable.deleteObserver() method. We've created an ObservedObject class by extending Observable class and then overridden its method setValue(). In main class, We've added the observers using addObserver() method. Then using deleteObserver() method, we're deleting an Observer added and in output, we've printed the updates happening to the value of ObservedObject.

package com.tutorialspoint;

import java.util.Observable;
import java.util.Observer;

class ObservedObject extends Observable {
   private Student watchedValue;
   
   public ObservedObject(Student value) {
      watchedValue = value;
   }
   
   public void setValue(Student value) {
      
      // if value has changed notify observers
      if(!watchedValue.equals(value)) {
         System.out.println("Value changed to new value: "+value);
         watchedValue = value;

         // mark as value changed
         setChanged();

         // trigger notification
         notifyObservers(value);
      }
   }
}
public class ObservableDemo implements Observer {
   public static void main(String[] args) {
      
      // create watched and watcher objects
      ObservedObject watched = new ObservedObject(new Student(1, "Julie"));
      
      // watcher object listens to object change
      ObservableDemo watcher = new ObservableDemo();

      // trigger value change
      watched.setValue(new Student(2, "Robert"));
      
      // add observer to the watched object
      watched.addObserver(watcher);
      
      // trigger value change
      watched.setValue(new Student(3, "Adam"));
      
      // delete observer
      watched.deleteObserver(watcher);
      
      // trigger value change
      watched.setValue(new Student(4, "Michael"));
   }
   
   public void update(Observable obj, Object arg) {
      System.out.println("Update called with Arguments: "+arg);
   }
}
class Student {
   int rollNo;
   String name;

   Student(int rollNo, String name){
      this.rollNo = rollNo;
      this.name = name;
   }

   @Override
   public String toString() {
      return "[ " + this.rollNo + ", " + this.name + " ]";
   }
}

Let us compile and run the above program, this will produce the following result −

Value changed to new value: [ 2, Robert ]
Value changed to new value: [ 3, Adam ]
Update called with Arguments: [ 3, Adam ]
Value changed to new value: [ 4, Michael ]
java_util_observable.htm
Advertisements