Module java.base
Package java.util

Class Observable

java.lang.Object
java.util.Observable

@Deprecated(since="9") public class Observable extends Object
Deprecated.
This class and the Observer interface have been deprecated. The event model supported by Observer and Observable is quite limited, the order of notifications delivered by Observable is unspecified, and state changes are not in one-for-one correspondence with notifications. For a richer event model, consider using the java.beans package. For reliable and ordered messaging among threads, consider using one of the concurrent data structures in the java.util.concurrent package. For reactive streams style programming, see the Flow API.
这个类表示模型-视图范式中的可观察对象或“数据”。它可以被子类化以表示应用程序希望被观察的对象。

可观察对象可以有一个或多个观察者。观察者可以是实现接口Observer的任何对象。在可观察实例发生更改后,调用ObservablenotifyObservers方法的应用程序会通过调用它们的update方法通知所有观察者更改。

通知将以未指定的顺序传递。Observable类中提供的默认实现将按照注册兴趣的顺序通知观察者,但子类可以更改此顺序,不使用保证的顺序,将通知传递到单独的线程上,或者可以保证其子类遵循此顺序,视情况而定。

请注意,此通知机制与线程无关,与Object类的waitnotify机制完全分开。

当可观察对象新创建时,其观察者集合为空。仅当equals方法对它们返回true时,两个观察者才被视为相同。

自从:
1.0
另请参阅:
  • Constructor Summary

    Constructors
    Constructor
    Description
    已弃用。
    构造一个具有零个观察者的Observable。
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    已弃用。
    将观察者添加到此对象的观察者集合中,前提是它与集合中已有的某个观察者不相同。
    protected void
    已弃用。
    表示此对象不再更改,或者它已经通知所有观察者其最近的更改,因此hasChanged方法现在将返回false
    int
    已弃用。
    返回此Observable对象的观察者数量。
    void
    已弃用。
    从此对象的观察者集合中删除一个观察者。
    void
    已弃用。
    清除观察者列表,使此对象不再具有任何观察者。
    boolean
    已弃用。
    测试此对象是否已更改。
    void
    已弃用。
    如果此对象已更改,如hasChanged方法所示,则通知其所有观察者,然后调用clearChanged方法指示此对象不再更改。
    void
    已弃用。
    如果此对象已更改,如hasChanged方法所示,则通知其所有观察者,然后调用clearChanged方法指示此对象不再更改。
    protected void
    已弃用。
    将此Observable对象标记为已更改;hasChanged方法现在将返回true

    Methods declared in class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Observable

      public Observable()
      Deprecated.
      构造一个具有零个观察者的Observable。
  • Method Details

    • addObserver

      public void addObserver(Observer o)
      Deprecated.
      将观察者添加到此对象的观察者集合中,前提是它与集合中已有的某个观察者不相同。不指定将通知多个观察者的顺序。请参阅类注释。
      参数:
      o - 要添加的观察者。
      抛出:
      NullPointerException - 如果参数o为null。
    • deleteObserver

      public void deleteObserver(Observer o)
      Deprecated.
      从此对象的观察者集合中删除一个观察者。将null传递给此方法将不会产生任何效果。
      参数:
      o - 要删除的观察者。
    • notifyObservers

      public void notifyObservers()
      Deprecated.
      如果此对象已更改,如hasChanged方法所示,则通知其所有观察者,然后调用clearChanged方法指示此对象不再更改。

      每个观察者的update方法都将使用两个参数调用:此可观察对象和null。换句话说,此方法等效于:

      notifyObservers(null)
      另请参阅:
    • notifyObservers

      public void notifyObservers(Object arg)
      Deprecated.
      如果此对象已更改,如hasChanged方法所示,则通知其所有观察者,然后调用clearChanged方法指示此对象不再更改。

      每个观察者的update方法都将使用两个参数调用:此可观察对象和arg参数。

      参数:
      arg - 任何对象。
      另请参阅:
    • deleteObservers

      public void deleteObservers()
      Deprecated.
      清除观察者列表,使此对象不再具有任何观察者。
    • setChanged

      protected void setChanged()
      Deprecated.
      将此Observable对象标记为已更改;hasChanged方法现在将返回true
    • clearChanged

      protected void clearChanged()
      Deprecated.
      表示此对象不再更改,或者它已经通知所有观察者其最近的更改,因此hasChanged方法现在将返回false。此方法将由notifyObservers方法自动调用。
      另请参阅:
    • hasChanged

      public boolean hasChanged()
      Deprecated.
      测试此对象是否已更改。
      返回:
      如果setChanged方法在此对象上的调用比clearChanged方法更近,则返回true;否则返回false
      另请参阅:
    • countObservers

      public int countObservers()
      Deprecated.
      返回此Observable对象的观察者数量。
      返回:
      此对象的观察者数量。