鴻蒙OS Observable

2022-07-29 16:43 更新

Observable

java.lang.Object

|---java.util.Observable

public class Observable
extends Object

此類表示可觀察對象,或模型視圖范例中的“數(shù)據(jù)”。 它可以被子類化以表示應(yīng)用程序想要觀察的對象。

一個可觀察對象可以有一個或多個觀察者。 觀察者可以是任何實(shí)現(xiàn)了 Observer 接口的對象。 在 observable 實(shí)例更改后,調(diào)用 Observable 的 notifyObservers 方法的應(yīng)用程序會通過調(diào)用其 update 方法將更改通知其所有觀察者。

遞送通知的順序是未指定的。觀察者類中提供的默認(rèn)實(shí)現(xiàn)將按照觀察者注冊興趣的順序通知他們,但是子類可以改變這個順序,不使用保證的順序,在不同的線程上傳遞通知,或者可以保證他們的子類遵循這個順序,這由他們選擇。

請注意,這種通知機(jī)制與線程無關(guān),與 Object 類的等待和通知機(jī)制完全分離。

當(dāng)一個可觀察對象被新創(chuàng)建時,它的觀察者集合是空的。 當(dāng)且僅當(dāng)equals方法為他們返回true時,兩個觀察者被認(rèn)為是相同的。

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
Observable() 構(gòu)造一個具有零個觀察者的 Observable。

方法總結(jié)

修飾符和類型 方法 描述
void addObserver(Observer o) 將一個觀察者添加到該對象的觀察者集合中,前提是它與集合中的某個觀察者不同。
protected void clearChanged() 指示此對象不再更改,或者它已經(jīng)通知所有觀察者其最近的更改,因此 hasChanged 方法現(xiàn)在將返回 false。
int countObservers() 返回此 Observable 對象的觀察者數(shù)量。
void deleteObserver(Observer o) 從該對象的觀察者集中刪除一個觀察者。
void deleteObservers() 清除觀察者列表,使該對象不再有任何觀察者。
boolean hasChanged() 測試此對象是否已更改。
void notifyObservers() 如果該對象發(fā)生了變化,如 hasChanged 方法所示,則通知其所有觀察者,然后調(diào)用 clearChanged 方法以指示該對象不再更改。
void notifyObservers(Object arg) 如果該對象發(fā)生了變化,如 hasChanged 方法所示,則通知其所有觀察者,然后調(diào)用 clearChanged 方法以指示該對象不再更改。
protected void setChanged() 將此 Observable 對象標(biāo)記為已更改; hasChanged 方法現(xiàn)在將返回 true。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構(gòu)造函數(shù)詳細(xì)信息

Observable

public Observable()

構(gòu)造一個具有零個觀察者的 Observable。

方法詳情

addObserver

public void addObserver(Observer o)

將一個觀察者添加到該對象的觀察者集合中,前提是它與集合中的某個觀察者不同。 未指定將通知傳遞給多個觀察者的順序。

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要添加的觀察者。

Throws:

Throw名稱 Throw描述
NullPointerException 如果參數(shù) o 為空。

deleteObserver

public void deleteObserver(Observer o)

從該對象的觀察者集中刪除一個觀察者。 將 null 傳遞給此方法將無效。

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要刪除的觀察者。

notifyObservers

public void notifyObservers()

如果該對象發(fā)生了變化,如 hasChanged 方法所示,則通知其所有觀察者,然后調(diào)用 clearChanged 方法以指示該對象不再更改。

每個觀察者都有它的更新方法,它使用兩個參數(shù)調(diào)用:這個可觀察對象和 null。 換句話說,這個方法等價于:

notifyObservers(null)

notifyObservers

public void notifyObservers(Object arg)

如果該對象發(fā)生了變化,如 hasChanged 方法所示,則通知其所有觀察者,然后調(diào)用 clearChanged 方法以指示該對象不再更改。

每個觀察者都有自己的 update 方法,使用兩個參數(shù)調(diào)用:這個 observable 對象和 arg 參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
arg 任何對象

deleteObservers

public void deleteObservers()

清除觀察者列表,使該對象不再有任何觀察者。

setChanged

protected void setChanged()

將此 Observable 對象標(biāo)記為已更改; hasChanged 方法現(xiàn)在將返回 true。

clearChanged

protected void clearChanged()

指示此對象不再更改,或者它已經(jīng)通知所有觀察者其最近的更改,因此 hasChanged 方法現(xiàn)在將返回 false。 該方法由 notifyObservers 方法自動調(diào)用。

hasChanged

public boolean hasChanged()

測試此對象是否已更改。

返回:

當(dāng)且僅當(dāng) setChanged 方法的調(diào)用時間比此對象上的 clearChanged 方法更近時才為 true; 否則為 false。

countObservers

public int countObservers()

返回此 Observable 對象的觀察者數(shù)量。

返回:

此對象的觀察者數(shù)量。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號