Класс Observable
- java.lang.Object
-
- java.util.Observable
@Deprecated(since="9") public class Observable extends Object
Observer устарели. Модель событий, поддерживаемая Observer и Observable, довольно ограничена, порядок уведомлений, отправляемых Observable не определён, а изменения состояния не соответствуют один к одному уведомлениям. Для более богатой модели событий рассмотрите использование пакета java.beans. Для надёжной и упорядоченной передачи сообщений между потоками рассмотрите использование одной из конкурирующих структур данных в пакете java.util.concurrent. Для программирования в стиле реактивных потоков см. API Flow.Этот класс представляет собой наблюдаемый объект или «данные» в модели-представления. Он может быть подклассом для представления объекта, за которым приложение хочет наблюдать.
Наблюдаемый объект может иметь одного или нескольких наблюдателей. Наблюдатель может быть любым объектом, реализующим интерфейс Observer. После изменения экземпляра наблюдаемого объекта приложение, вызывающее метод Observable's notifyObservers уведомляет всех своих наблюдателей об изменении вызовом их метода update.
Порядок, в котором будут доставлены уведомления, не определён. Представленное в классе Observable по умолчанию реализация уведомит наблюдателей в порядке их регистрации, но подклассы могут изменить этот порядок, использовать порядок без гарантий, отправлять уведомления в отдельных потоках или гарантировать, что их подкласс следует этому порядку, по своему выбору.
Обратите внимание, что этот механизм уведомления не связан с потоками и полностью отделен от механизма wait и notify класса Object.
Когда наблюдаемый объект только что создан, его набор наблюдателей пуст. Два наблюдателя считаются одинаковыми, если и только если метод equals возвращает true для них.
- С:
- 1.0
- См. также:
-
notifyObservers(),notifyObservers(java.lang.Object),Observer,Observer.update(java.util.Observable, java.lang.Object)
Конструкторы
| Конструктор | Описание |
|---|---|
Observable() |
Устаревший. Создаёт Observable с нулём наблюдателей. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
void |
addObserver(Observer o) |
Устаревший. Добавляет наблюдателя в набор наблюдателей для этого объекта, при условии, что он не совпадает с каким-либо наблюдателем, уже присутствующим в наборе. |
protected void |
clearChanged() |
Устаревший. Указывает, что этот объект больше не изменился или что он уже уведомил всех своих наблюдателей о своём последнем изменении, так что метод |
int |
countObservers() |
Устаревший. Возвращает количество наблюдателей этого объекта |
void |
deleteObserver(Observer o) |
Устаревший. Удаляет наблюдателя из набора наблюдателей этого объекта. |
void |
deleteObservers() |
Устаревший. Очищает список наблюдателей, так что этот объект больше не имеет наблюдателей. |
boolean |
hasChanged() |
Устаревший. Проверяет, изменился ли этот объект. |
void |
notifyObservers() |
Устаревший. Если этот объект изменился, как указано методом |
void |
notifyObservers(Object arg) |
Устаревший. Если этот объект изменился, как указано методом |
protected void |
setChanged() |
Устаревший. Помечает этот объект |
Методы, объявленные в классе 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 с двумя аргументами: этим наблюдаемым объектом и null.
Другими словами, этот метод эквивалентен:
notifyObservers(null)
notifyObservers
public void notifyObservers(Object arg)
Если этот объект изменился, как указано методом hasChanged, тогда уведомите всех своих наблюдателей и затем вызовите метод clearChanged, чтобы указать, что этот объект больше не изменился.
Каждый наблюдатель вызовёт метод update с двумя аргументами: этим наблюдаемым объектом и аргументом 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 теперь вернёт false.
Этот метод вызывается автоматически методами notifyObservers.
- См. также:
-
notifyObservers(),notifyObservers(java.lang.Object)
hasChanged
public boolean hasChanged()
Проверяет, изменился ли этот объект.
- Возвращает:
-
true, если и только если метод
setChangedбыл вызван позже, чем методclearChangedв этом объекте; false в противном случае. - См. также:
-
clearChanged(),setChanged()
countObservers
public int countObservers()
Возвращает количество наблюдателей этого объекта Observable.
- Возвращает:
- количество наблюдателей этого объекта.
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/Observable.html