在 Java 中可观察
2022-09-03 04:25:08
我试图理解观察者和可观察者。
下面是一个我试图弄清楚的例子:
public class IntegerDataBag extends Observable implements Iterable<Integer> {
private ArrayList<Integer> list= new ArrayList<Integer>();
public void add(Integer i){
list.add(i);
setChanged();
notifyObservers();
}
public Iterator<Integer> iterator(){
return list.iterator();
}
public Integer remove (int index){
if (index< list.size()){
Integer i = list.remove(index);
setChanged();
notifyObservers();
return i;
}
return null;
}
}
public class IntegerAdder implements Observer {
private IntegerDataBag bag;
public IntegerAdder(IntegerDataBag bag) {
this.bag = bag;
bag.addObserver(this);
}
public void update(Observable o, Object arg) {
if (o == bag) {
System.out.println("The contents of the IntegerDataBag have changed");
}
}
}
只能因为扩展而使 ?
bag.addObserver()
IntegerDataBag
Observable
这个观察者被添加到哪里?正在创建什么,在哪里创建?
和 有什么区别?
setChanged()
notifyObservers()
我不明白方法;代表什么?为什么我需要检查一下?为什么要更新另一个可观察量?
update
arg
o==bag
为什么我需要这个观察者呢?