Java Observable 类



介绍

Java Observable 类表示一个可观察对象,或在模型-视图范式中的“数据”。以下是关于 Observable 的重要要点:

  • 该类可以被子类化以表示应用程序希望被观察的对象。

  • 一个可观察对象可以有一个或多个观察者。

类声明

以下是 java.util.Observable 类的声明:

public class Observable
   extends Object

类构造函数

序号 构造函数 & 描述
1

Observable()

这将构造一个具有零个观察者的 Observable。

类方法

序号 方法 & 描述
1 void addObserver(Observer o)

此方法将一个观察者添加到此对象的观察者集中,前提是它与集合中已有的某个观察者不同。

2 protected void clearChanged()

此方法指示此对象不再发生更改,或者它已经通知其所有观察者其最新的更改,以便 hasChanged 方法现在将返回 false。

3 int countObservers()

此方法返回此 Observable 对象的观察者数量。

4 void deleteObserver(Observer o)

此方法从此对象的观察者集中删除一个观察者。

5 void deleteObservers()

此方法清除观察者列表,以便此对象不再有任何观察者。

6 boolean hasChanged()

此方法测试此对象是否已更改。

7 void notifyObservers()

如果此对象已更改(如 hasChanged 方法所示),则通知其所有观察者,然后调用 clearChanged 方法以指示此对象不再发生更改。

8 void notifyObservers(Object arg)

如果此对象已更改(如 hasChanged 方法所示),则通知其所有观察者,然后调用 clearChanged 方法以指示此对象不再发生更改。

9 protected void setChanged()

此方法返回将此 Observable 对象标记为已更改;hasChanged 方法现在将返回 true。

继承的方法

此类继承自以下类的方法:

  • java.util.Object

使用 Observer 示例添加观察者并获取更新

以下示例演示了 java.util.Observable.addObserver(Observer) 方法的用法。

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("New Value");

      // add observer to the watched object
      watched.addObserver(watcher);

      // trigger value change
      watched.setValue("Latest Value");
   }
      
   public void update(Observable obj, Object arg) {
      System.out.println("Update called with Arguments: "+arg);
   }
}

输出

让我们编译并运行上述程序,这将产生以下结果:

Value changed to new value: New Value
Value changed to new value: Latest Value
Update called with Arguments: Latest Value
广告

© . All rights reserved.