鴻蒙OS Observable

2022-07-29 16:43 更新

Observable

java.lang.Object

|---java.util.Observable

public class Observable
extends Object

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

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

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

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

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

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

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

方法總結(jié)

修飾符和類型 方法 描述
void addObserver(Observer o) 將一個(gè)觀察者添加到該對(duì)象的觀察者集合中,前提是它與集合中的某個(gè)觀察者不同。
protected void clearChanged() 指示此對(duì)象不再更改,或者它已經(jīng)通知所有觀察者其最近的更改,因此 hasChanged 方法現(xiàn)在將返回 false。
int countObservers() 返回此 Observable 對(duì)象的觀察者數(shù)量。
void deleteObserver(Observer o) 從該對(duì)象的觀察者集中刪除一個(gè)觀察者。
void deleteObservers() 清除觀察者列表,使該對(duì)象不再有任何觀察者。
boolean hasChanged() 測試此對(duì)象是否已更改。
void notifyObservers() 如果該對(duì)象發(fā)生了變化,如 hasChanged 方法所示,則通知其所有觀察者,然后調(diào)用 clearChanged 方法以指示該對(duì)象不再更改。
void notifyObservers(Object arg) 如果該對(duì)象發(fā)生了變化,如 hasChanged 方法所示,則通知其所有觀察者,然后調(diào)用 clearChanged 方法以指示該對(duì)象不再更改。
protected void setChanged() 將此 Observable 對(duì)象標(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)造一個(gè)具有零個(gè)觀察者的 Observable。

方法詳情

addObserver

public void addObserver(Observer o)

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

參數(shù):

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

Throws:

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

deleteObserver

public void deleteObserver(Observer o)

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

參數(shù):

參數(shù)名稱 參數(shù)描述
o 要?jiǎng)h除的觀察者。

notifyObservers

public void notifyObservers()

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

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

notifyObservers(null)

notifyObservers

public void notifyObservers(Object arg)

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

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

參數(shù):

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

deleteObservers

public void deleteObservers()

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

setChanged

protected void setChanged()

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

clearChanged

protected void clearChanged()

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

hasChanged

public boolean hasChanged()

測試此對(duì)象是否已更改。

返回:

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

countObservers

public int countObservers()

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

返回:

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

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)