Java Observable notifyObservers()方法与示例

可观察类notifyObservers()方法

语法:

    public void notifyObservers();
    public void notifyObservers(Object o);
  • notifyObservers()方法在java.util包中可用。

  • 当对象已更改时,notifyObservers()方法用于通知列表中的所有观察者。

  • notifyObservers(Object o)方法用于在此对象发生更改时通知其列表中的所有观察者,稍后将调用clearChanged()to表示该对象不再需要更改。

  • 在通知观察者时,这些方法不会引发异常。

  • 这些是非静态方法,可通过类对象进行访问,如果尝试使用类名访问这些方法,则也会收到错误消息。

参数:

  • 在第一种情况下,notifyObservers() –它不接受任何参数。

  • 在第一种情况下,notifyObservers(Object o) – Object o –表示任何类型的对象。

返回值:

在这两种情况下,该方法的返回类型都是空的,它什么也不返回。

范例1:

//Java程序演示示例 
//的notifyObservers()状态的可观方法

import java.util.*;

//实现观察者类 
class Observers_1 implements Observer {
    public void update(Observable obj, Object ob) {
        System.out.println("Obs1 is notified");
    }
}

//实施观察类
class Observed extends Observable {
    //函数调用setChanged()
    void notifyObserver() {        setChanged();

        //通过使用notifyObservers()方法是 
        //通知所有观察者
        //已实现        notifyObservers();
    }
}

public class NotifyObserver {
    //实现主要方法
    public static void main(String args[]) {
        Observed observed = new Observed();
        Observers_1 obs1 = new Observers_1();
        observed.addObserver(obs1);
        observed.notifyObserver();
    }
}

输出结果

Obs1 is notified

范例2:

import java.util.*;

class Observers_2 implements Observer {
    public void update(Observable obj, Object ob) {
        System.out.println("Obs2 is notified: " + ((Float) ob).floatValue());
    }
}

//实施观察类
class Observed extends Observable {
    //函数调用setChanged()
    void notifyObserver1() {        setChanged();

        //通过使用notifyObservers()方法是 
        //通知所有观察者
        //已实现        notifyObservers();
    }

    void notifyObserver2() {        setChanged();

        //通过使用notifyObservers()方法是 
        //通知所有观察者
        //已实现 with the given object
        notifyObservers(new Float(10.0));
    }

}

public class NotifyObserver {
    //实现主要方法
    public static void main(String args[]) {
        Observed observed = new Observed();
        Observers_2 obs2 = new Observers_2();
        observed.addObserver(obs2);
        observed.notifyObserver2();

    }
}

输出结果

Obs2 is notified: 10.0