我正在使用 Java 实现 Observer/Observable 模式。但是,我在代码的 Observer 部分遇到了问题。
可观察
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 上的泛型?这可能吗? (如果可能的话,我更愿意在不实现更多类的情况下这样做。)
最佳答案
Observable 应该发送一种且仅一种类型的数据。
public class ModelA extends Observable {
public void notify() {
this.setChanged();
this.notifyObservers(new ArrayList<A>());
}
}
public class ModelB extends Observable {
public void notify() {
this.setChanged();
this.notifyObservers(new ArrayList<B>());
}
}
您的另一种选择是将 ArrayList 和 ArrayList 放入一个类中。您可以通过该类通知您的观察者。
关于java - Java中如何知道Observer类发送的泛型对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12113283/