public class Observable extends Object
可观察对象可以有一个或多个观察者。 观察者可以是实现接口Observer的任何对象。 在可观察到的实例发生变化之后,调用Observable
的notifyObservers
方法的应用程序会使其所有观察者通过调用其update
方法通知更改。
通知的发送顺序是未指定的。 Observable类中提供的默认实现将以注册感兴趣的顺序通知Observers,但子类可能会更改此顺序,不使用保证的顺序,在单独的线程上发送通知,或者可以保证其子类遵循此顺序,因为它们选择。
请注意,此通知机制与线程无关,与Object的wait和notify机制完全分离 。
当新创建一个可观察对象时,其观察者集合为空。 当且仅当equals方法为它们返回true时,两个观察者被认为是相同的。
notifyObservers()
, notifyObservers(java.lang.Object)
, Observer
, Observer.update(java.util.Observable, java.lang.Object)
Constructor and Description |
---|
Observable()
用零观察者构建可观测值。
|
Modifier and Type | Method and Description |
---|---|
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 。
|
public void addObserver(Observer o)
o
- 要添加的观察者。
NullPointerException
- 如果参数o为空。
public void deleteObserver(Observer o)
null
到这个方法将没有任何效果。
o
- 要删除的观察者。
public void notifyObservers()
hasChanged
方法,则通知其所有观察者,并调用clearChanged
方法来指示该对象不再改变。
每个观察者都有其update
方法调用两个参数:这个可观察对象和null
。 换句话说,这个方法相当于:
notifyObservers(null)
public void notifyObservers(Object arg)
hasChanged
方法,则通知其所有观察者,并调用clearChanged
方法来指示该对象不再改变。
每个观察者都有其update
方法调用两个参数:这个可观察对象和arg
参数。
arg
- 任何对象。
clearChanged()
,
hasChanged()
,
Observer.update(java.util.Observable, java.lang.Object)
public void deleteObservers()
protected void setChanged()
protected void clearChanged()
notifyObservers
方法notifyObservers
调用。
public boolean hasChanged()
true
当且仅当setChanged
方法最近被调用的方法比该对象上的clearChanged
方法更clearChanged
;
false
否则。
clearChanged()
,
setChanged()
public int countObservers()