Java Observable countObservers() 方法



描述

Java Observable countObservers() 方法返回此Observable物件的觀察者數量。

宣告

以下是Java.util.Observable.countObservers()方法的宣告

public int countObservers()

引數

返回值

此方法返回此物件的觀察者數量。

異常

字串值更改示例的觀察者計數

以下示例顯示了 java.util.Observable.countObservers() 方法的用法。我們透過擴充套件 Observable 類建立了一個 ObservedObject 類,然後覆蓋了其 setValue() 方法。在主類中,我們使用 addObserver() 方法添加了觀察者。然後使用 countObservers() 方法,我們計算新增的觀察者,並在輸出中列印 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 String name;
   
   public ObservableDemo(String name) {
      this.name = name;
   }
   
   public static void main(String[] args) {
      
      // create watched and watcher objects
      ObservedObject watched = new ObservedObject("Original Value");
      
      // watcher object listens to object change
      ObservableDemo watcher1 = new ObservableDemo("Watcher1");
      ObservableDemo watcher2 = new ObservableDemo("Watcher2");

      // add observer to the watched object
      watched.addObserver(watcher1);
      watched.addObserver(watcher2);
      
      // count observers
      int count = watched.countObservers();
      System.out.println(count+" observers listening");
      
      // trigger value change
      watched.setValue("New Value");
      
      // remove first observer
      watched.deleteObserver(watcher1);
      count = watched.countObservers();
      System.out.println(count+" observers listening");
      
      // trigger value change
      watched.setValue("Latest Value");
   }
   
   public void update(Observable obj, Object arg) {
      System.out.println(name+" called with Arguments: "+arg);
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

2 observers listening
Value changed to new value: New Value
Watcher2 called with Arguments: New Value
Watcher1 called with Arguments: New Value
1 observers listening
Value changed to new value: Latest Value
Watcher2 called with Arguments: Latest Value

整數值更改示例的觀察者計數

以下示例顯示了 java.util.Observable.countObservers() 方法的用法。我們透過擴充套件 Observable 類建立了一個 ObservedObject 類,然後覆蓋了其 setValue() 方法。在主類中,我們使用 addObserver() 方法添加了觀察者。然後使用 countObservers() 方法,我們計算新增的觀察者,並在輸出中列印 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 String name;
   
   public ObservableDemo(String name) {
      this.name = name;
   }
   
   public static void main(String[] args) {
      
      // create watched and watcher objects
      ObservedObject watched = new ObservedObject(1);
      
      // watcher object listens to object change
      ObservableDemo watcher1 = new ObservableDemo("Watcher1");
      ObservableDemo watcher2 = new ObservableDemo("Watcher2");

      // add observer to the watched object
      watched.addObserver(watcher1);
      watched.addObserver(watcher2);
      
      // count observers
      int count = watched.countObservers();
      System.out.println(count+" observers listening");
      
      // trigger value change
      watched.setValue(2);
      
      // remove first observer
      watched.deleteObserver(watcher1);
      count = watched.countObservers();
      System.out.println(count+" observers listening");
      
      // trigger value change
      watched.setValue(3);
   }
   
   public void update(Observable obj, Object arg) {
      System.out.println(name+" called with Arguments: "+arg);
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

2 observers listening
Value changed to new value: 2
Watcher2 called with Arguments: 2
Watcher1 called with Arguments: 2
1 observers listening
Value changed to new value: 3
Watcher2 called with Arguments: 3

物件值更改示例的觀察者計數

以下示例顯示了 java.util.Observable.countObservers() 方法的用法。我們透過擴充套件 Observable 類建立了一個 ObservedObject 類,然後覆蓋了其 setValue() 方法。在主類中,我們使用 addObserver() 方法添加了觀察者。然後使用 countObservers() 方法,我們計算新增的觀察者,並在輸出中列印 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 String name;
   
   public ObservableDemo(String name) {
      this.name = name;
   }
   
   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 watcher1 = new ObservableDemo("Watcher1");
      ObservableDemo watcher2 = new ObservableDemo("Watcher2");

      // add observer to the watched object
      watched.addObserver(watcher1);
      watched.addObserver(watcher2);
      
      // count observers
      int count = watched.countObservers();
      System.out.println(count+" observers listening");
      
      // trigger value change
      watched.setValue(new Student(2, "Robert"));
      
      // remove first observer
      watched.deleteObserver(watcher1);
      count = watched.countObservers();
      System.out.println(count+" observers listening");
      
      // trigger value change
      watched.setValue(new Student(3, "Adam"));
   }
   
   public void update(Observable obj, Object arg) {
      System.out.println(name+" 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 + " ]";
   }
}

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

2 observers listening
Value changed to new value: [ 2, Robert ]
Watcher2 called with Arguments: [ 2, Robert ]
Watcher1 called with Arguments: [ 2, Robert ]
1 observers listening
Value changed to new value: [ 3, Adam ]
Watcher2 called with Arguments: [ 3, Adam ]
java_util_observable.htm
廣告