我正在使用java实现observer/observate模式。但是,我在代码的观察者部分遇到了一个问题。
可观察的
public class Model extends Observable {
public void notify() {
this.setChanged();
this.notifyObservers(new ArrayList<A>());
this.notifyObservers(new ArrayList<B>());
}
}
观察者
public class View implements Observer {
@Override
public void update(Observable observable, Object object) {
// TODO: If object is ArrayList<A>?
System.out.println("A");
// TODO: If object is ArrayList<B>?
System.out.println("B");
}
}
如何填写todo注解以检查arraylist上的泛型?这有可能吗(如果可能的话,我更愿意在不实现更多类的情况下这样做。)
2条答案
按热度按时间6jjcrrmo1#
你可以用
instanceof
看看你的对象是什么类型的,但是你误用了这个模式。我们的想法是
Observable
有一个定义良好的接口和所有Observer
需要知道的是使用api来传递通知。逻辑知道什么是
Observable
不应在代码中混用。从你的问题听上去你有两个
Observable
他们应该让自己的听众对他们特别感兴趣,以便通知他们。一个都没有8xiog9wr2#
一个可观察对象应该只发送一种类型的数据。
另一种选择是将arraylist和arraylist放入一个类中。你可以用这个类通知你的观察者。