JavaTM 2 Platform
Standard Ed. 6

java.util
類別 Observable

java.lang.Object
  繼承者 java.util.Observable

public class Observable
extends Object

此類別表示模型視圖範例中的 observable 物件,或者說「資料」。可將其子類別化,表示應用程序想要觀察的物件。

一個 observable 物件可以有一個或多個觀察者。觀察者可以是實作了 Observer 介面的任意物件。一個 observable 實例改變後,調用 ObservablenotifyObservers 方法的應用程序會通過調用觀察者的 update 方法來通知觀察者該實例發生了改變。

未指定發送通知的順序。Observable 類別中所提供的預設實作將按照其註冊的重要性順序來通知 Observers,但是子類別可能改變此順序,從而使用非固定順序在單獨的執行緒上發送通知,或者也可能保證其子類別遵從其所選擇的順序。

注意,此通知機制與執行緒無關,並且與 Object 類別的 waitnotify 機制完全獨立。

新創建一個 observable 物件時,其觀察者集是空的。當且僅當 equals 方法為兩個觀察者返回 true 時,才認為它們是相同的。

從以下版本開始:
JDK1.0
另請參見:
notifyObservers(), notifyObservers(java.lang.Object), Observer, Observer.update(java.util.Observable, java.lang.Object)

建構子摘要
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 - 要添加的觀察者。
拋出:
NullPointerException - 如果參數 o 為 null。

deleteObserver

public void deleteObserver(Observer o)
從物件的觀察者集合中刪除某個觀察者。向此方法傳遞 null 將使其無效。

參數:
o - 要刪除的觀察者。

notifyObservers

public void notifyObservers()
如果 hasChanged 方法指示物件已改變,則通知其所有觀察者,並調用 clearChanged 方法來指示此物件不再改變。

每個觀察者都有其 update 方法,其調用參數有兩個:observable 物件和 null。換句話說,此方法等效於:

notifyObservers(null)

另請參見:
clearChanged(), hasChanged(), Observer.update(java.util.Observable, java.lang.Object)

notifyObservers

public void notifyObservers(Object arg)
如果 hasChanged 方法指示物件已改變,則通知其所有觀察者,並調用 clearChanged 方法來指示此物件不再改變。

每個觀察者都有其 update 方法,其調用參數有兩個:observable 物件和 arg 參數。

參數:
arg - 任意物件。
另請參見:
clearChanged(), hasChanged(), Observer.update(java.util.Observable, java.lang.Object)

deleteObservers

public void deleteObservers()
清除觀察者列表,使此物件不再有任何觀察者。


setChanged

protected void setChanged()
標記此 Observable 物件為已改變的物件;現在 hasChanged 方法將返回 true


clearChanged

protected void clearChanged()
指示物件不再改變,或者它已對其所有的觀察者通知了最近的改變,所以 hasChanged 方法將返回 falsenotifyObservers 方法自動調用此方法。

另請參見:
notifyObservers(), notifyObservers(java.lang.Object)

hasChanged

public boolean hasChanged()
測試物件是否改變。

返回:
當且僅當在此物件上最近調用了 setChanged 方法,而不是 clearChanged 方法時,才返回 true;否則返回 false
另請參見:
clearChanged(), setChanged()

countObservers

public int countObservers()
返回 Observable 物件的觀察者數目。

返回:
物件的觀察者數目。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only