Java Observable notifyObservers()方法与示例
可观察类notifyObservers()方法
语法:
public void notifyObservers();
public void notifyObservers(Object o);notifyObservers()方法在java.util包中可用。
当对象已更改时,notifyObservers()方法用于通知列表中的所有观察者。
notifyObservers(Objecto)方法用于在此对象发生更改时通知其列表中的所有观察者,稍后将调用clearChanged()to表示该对象不再需要更改。
在通知观察者时,这些方法不会引发异常。
这些是非静态方法,可通过类对象进行访问,如果尝试使用类名访问这些方法,则也会收到错误消息。
参数:
在第一种情况下,notifyObservers()–它不接受任何参数。
在第一种情况下,notifyObservers(Objecto)–Objecto–表示任何类型的对象。
返回值:
在这两种情况下,该方法的返回类型都是空的,它什么也不返回。
范例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