Observable
java.lang.Object
|—java.util.Observable
public class Observable
extends Object
此类表示可观察对象,或模型视图范例中的“数据”。 它可以被子类化以表示应用程序想要观察的对象。
一个可观察对象可以有一个或多个观察者。 观察者可以是任何实现了 Observer 接口的对象。 在 observable 实例更改后,调用 Observable 的 notifyObservers 方法的应用程序会通过调用其 update 方法将更改通知其所有观察者。
递送通知的顺序是未指定的。观察者类中提供的默认实现将按照观察者注册兴趣的顺序通知他们,但是子类可以改变这个顺序,不使用保证的顺序,在不同的线程上传递通知,或者可以保证他们的子类遵循这个顺序,这由他们选择。
请注意,这种通知机制与线程无关,与 Object 类的等待和通知机制完全分离。
当一个可观察对象被新创建时,它的观察者集合是空的。 当且仅当equals方法为他们返回true时,两个观察者被认为是相同的。
构造函数摘要
构造函数 | 描述 |
---|---|
Observable() | 构造一个具有零个观察者的 Observable。 |
方法总结
修饰符和类型 | 方法 | 描述 |
---|---|---|
void | addObserver(Observer o) | 将一个观察者添加到该对象的观察者集合中,前提是它与集合中的某个观察者不同。 |
protected void | clearChanged() | 指示此对象不再更改,或者它已经通知所有观察者其最近的更改,因此 hasChanged 方法现在将返回 false。 |
int | countObservers() | 返回此 Observable 对象的观察者数量。 |
void | deleteObserver(Observer o) | 从该对象的观察者集中删除一个观察者。 |
void | deleteObservers() | 清除观察者列表,使该对象不再有任何观察者。 |
boolean | hasChanged() | 测试此对象是否已更改。 |
void | notifyObservers() | 如果该对象发生了变化,如 hasChanged 方法所示,则通知其所有观察者,然后调用 clearChanged 方法以指示该对象不再更改。 |
void | notifyObservers(Object arg) | 如果该对象发生了变化,如 hasChanged 方法所示,则通知其所有观察者,然后调用 clearChanged 方法以指示该对象不再更改。 |
protected void | setChanged() | 将此 Observable 对象标记为已更改; hasChanged 方法现在将返回 true。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造函数详细信息
Observable
public Observable()
构造一个具有零个观察者的 Observable。
方法详情
addObserver
public void addObserver(Observer o)
将一个观察者添加到该对象的观察者集合中,前提是它与集合中的某个观察者不同。 未指定将通知传递给多个观察者的顺序。
参数:
参数名称 | 参数描述 |
---|---|
o | 要添加的观察者。 |
Throws:
Throw名称 | Throw描述 |
---|---|
NullPointerException | 如果参数 o 为空。 |
deleteObserver
public void deleteObserver(Observer o)
从该对象的观察者集中删除一个观察者。 将 null 传递给此方法将无效。
参数:
参数名称 | 参数描述 |
---|---|
o | 要删除的观察者。 |
notifyObservers
public void notifyObservers()
如果该对象发生了变化,如 hasChanged 方法所示,则通知其所有观察者,然后调用 clearChanged 方法以指示该对象不再更改。
每个观察者都有它的更新方法,它使用两个参数调用:这个可观察对象和 null。 换句话说,这个方法等价于:
notifyObservers(null)
notifyObservers
public void notifyObservers(Object arg)
如果该对象发生了变化,如 hasChanged 方法所示,则通知其所有观察者,然后调用 clearChanged 方法以指示该对象不再更改。
每个观察者都有自己的 update 方法,使用两个参数调用:这个 observable 对象和 arg 参数。
参数:
参数名称 | 参数描述 |
---|---|
arg | 任何对象 |
deleteObservers
public void deleteObservers()
清除观察者列表,使该对象不再有任何观察者。
setChanged
protected void setChanged()
将此 Observable 对象标记为已更改; hasChanged 方法现在将返回 true。
clearChanged
protected void clearChanged()
指示此对象不再更改,或者它已经通知所有观察者其最近的更改,因此 hasChanged 方法现在将返回 false。 该方法由 notifyObservers 方法自动调用。
hasChanged
public boolean hasChanged()
测试此对象是否已更改。
返回:
当且仅当 setChanged 方法的调用时间比此对象上的 clearChanged 方法更近时才为 true; 否则为 false。
countObservers
public int countObservers()
返回此 Observable 对象的观察者数量。
返回:
此对象的观察者数量。