Java Observable 类



介绍

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

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

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

类声明

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

public class Observable extends Object

Learn Java in-depth with real-world projects through our Java certification course. Enroll and become a certified expert to boost your career.

类构造函数

序号 构造函数 & 描述
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) 方法的用法。

Open Compiler
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
广告