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