< prev index next >

src/java.base/share/classes/java/util/Observable.java

Print this page

        

*** 29,58 **** * This class represents an observable object, or "data" * in the model-view paradigm. It can be subclassed to represent an * object that the application wants to have observed. * <p> * An observable object can have one or more observers. An observer ! * may be any object that implements interface <tt>Observer</tt>. After an * observable instance changes, an application calling the ! * <code>Observable</code>'s <code>notifyObservers</code> method * causes all of its observers to be notified of the change by a call ! * to their <code>update</code> method. * <p> * The order in which notifications will be delivered is unspecified. * The default implementation provided in the Observable class will * notify Observers in the order in which they registered interest, but * subclasses may change this order, use no guaranteed order, deliver * notifications on separate threads, or may guarantee that their * subclass follows this order, as they choose. * <p> * Note that this notification mechanism has nothing to do with threads ! * and is completely separate from the <tt>wait</tt> and <tt>notify</tt> ! * mechanism of class <tt>Object</tt>. * <p> * When an observable object is newly created, its set of observers is * empty. Two observers are considered the same if and only if the ! * <tt>equals</tt> method returns true for them. * * @author Chris Warth * @see java.util.Observable#notifyObservers() * @see java.util.Observable#notifyObservers(java.lang.Object) * @see java.util.Observer --- 29,58 ---- * This class represents an observable object, or "data" * in the model-view paradigm. It can be subclassed to represent an * object that the application wants to have observed. * <p> * An observable object can have one or more observers. An observer ! * may be any object that implements interface {@code Observer}. After an * observable instance changes, an application calling the ! * {@code Observable}'s {@code notifyObservers} method * causes all of its observers to be notified of the change by a call ! * to their {@code update} method. * <p> * The order in which notifications will be delivered is unspecified. * The default implementation provided in the Observable class will * notify Observers in the order in which they registered interest, but * subclasses may change this order, use no guaranteed order, deliver * notifications on separate threads, or may guarantee that their * subclass follows this order, as they choose. * <p> * Note that this notification mechanism has nothing to do with threads ! * and is completely separate from the {@code wait} and {@code notify} ! * mechanism of class {@code Object}. * <p> * When an observable object is newly created, its set of observers is * empty. Two observers are considered the same if and only if the ! * {@code equals} method returns true for them. * * @author Chris Warth * @see java.util.Observable#notifyObservers() * @see java.util.Observable#notifyObservers(java.lang.Object) * @see java.util.Observer
*** 86,113 **** } } /** * Deletes an observer from the set of observers of this object. ! * Passing <CODE>null</CODE> to this method will have no effect. * @param o the observer to be deleted. */ public synchronized void deleteObserver(Observer o) { obs.removeElement(o); } /** * If this object has changed, as indicated by the ! * <code>hasChanged</code> method, then notify all of its observers ! * and then call the <code>clearChanged</code> method to * indicate that this object has no longer changed. * <p> ! * Each observer has its <code>update</code> method called with two ! * arguments: this observable object and <code>null</code>. In other * words, this method is equivalent to: ! * <blockquote><tt> ! * notifyObservers(null)</tt></blockquote> * * @see java.util.Observable#clearChanged() * @see java.util.Observable#hasChanged() * @see java.util.Observer#update(java.util.Observable, java.lang.Object) */ --- 86,113 ---- } } /** * Deletes an observer from the set of observers of this object. ! * Passing {@code null} to this method will have no effect. * @param o the observer to be deleted. */ public synchronized void deleteObserver(Observer o) { obs.removeElement(o); } /** * If this object has changed, as indicated by the ! * {@code hasChanged} method, then notify all of its observers ! * and then call the {@code clearChanged} method to * indicate that this object has no longer changed. * <p> ! * Each observer has its {@code update} method called with two ! * arguments: this observable object and {@code null}. In other * words, this method is equivalent to: ! * <blockquote>{@code ! * notifyObservers(null)}</blockquote> * * @see java.util.Observable#clearChanged() * @see java.util.Observable#hasChanged() * @see java.util.Observer#update(java.util.Observable, java.lang.Object) */
*** 115,130 **** notifyObservers(null); } /** * If this object has changed, as indicated by the ! * <code>hasChanged</code> method, then notify all of its observers ! * and then call the <code>clearChanged</code> method to indicate * that this object has no longer changed. * <p> ! * Each observer has its <code>update</code> method called with two ! * arguments: this observable object and the <code>arg</code> argument. * * @param arg any object. * @see java.util.Observable#clearChanged() * @see java.util.Observable#hasChanged() * @see java.util.Observer#update(java.util.Observable, java.lang.Object) --- 115,130 ---- notifyObservers(null); } /** * If this object has changed, as indicated by the ! * {@code hasChanged} method, then notify all of its observers ! * and then call the {@code clearChanged} method to indicate * that this object has no longer changed. * <p> ! * Each observer has its {@code update} method called with two ! * arguments: this observable object and the {@code arg} argument. * * @param arg any object. * @see java.util.Observable#clearChanged() * @see java.util.Observable#hasChanged() * @see java.util.Observer#update(java.util.Observable, java.lang.Object)
*** 165,187 **** public synchronized void deleteObservers() { obs.removeAllElements(); } /** ! * Marks this <tt>Observable</tt> object as having been changed; the ! * <tt>hasChanged</tt> method will now return <tt>true</tt>. */ protected synchronized void setChanged() { changed = true; } /** * Indicates that this object has no longer changed, or that it has * already notified all of its observers of its most recent change, ! * so that the <tt>hasChanged</tt> method will now return <tt>false</tt>. * This method is called automatically by the ! * <code>notifyObservers</code> methods. * * @see java.util.Observable#notifyObservers() * @see java.util.Observable#notifyObservers(java.lang.Object) */ protected synchronized void clearChanged() { --- 165,187 ---- public synchronized void deleteObservers() { obs.removeAllElements(); } /** ! * Marks this {@code Observable} object as having been changed; the ! * {@code hasChanged} method will now return {@code true}. */ protected synchronized void setChanged() { changed = true; } /** * Indicates that this object has no longer changed, or that it has * already notified all of its observers of its most recent change, ! * so that the {@code hasChanged} method will now return {@code false}. * This method is called automatically by the ! * {@code notifyObservers} methods. * * @see java.util.Observable#notifyObservers() * @see java.util.Observable#notifyObservers(java.lang.Object) */ protected synchronized void clearChanged() {
*** 189,211 **** } /** * Tests if this object has changed. * ! * @return <code>true</code> if and only if the <code>setChanged</code> * method has been called more recently than the ! * <code>clearChanged</code> method on this object; ! * <code>false</code> otherwise. * @see java.util.Observable#clearChanged() * @see java.util.Observable#setChanged() */ public synchronized boolean hasChanged() { return changed; } /** ! * Returns the number of observers of this <tt>Observable</tt> object. * * @return the number of observers of this object. */ public synchronized int countObservers() { return obs.size(); --- 189,211 ---- } /** * Tests if this object has changed. * ! * @return {@code true} if and only if the {@code setChanged} * method has been called more recently than the ! * {@code clearChanged} method on this object; ! * {@code false} otherwise. * @see java.util.Observable#clearChanged() * @see java.util.Observable#setChanged() */ public synchronized boolean hasChanged() { return changed; } /** ! * Returns the number of observers of this {@code Observable} object. * * @return the number of observers of this object. */ public synchronized int countObservers() { return obs.size();
< prev index next >