我如何知道Observer类在Java中发送的通用对象?
我正在使用Java实现Observer / Observable模式。 但是,我在代码的Observer部分遇到问题。
可观察
public class Model extends Observable { public void notify() { this.setChanged(); this.notifyObservers(new ArrayList()); this.notifyObservers(new ArrayList()); } }
观察
public class View implements Observer { @Override public void update(Observable observable, Object object) { // TODO: If object is ArrayList? System.out.println("A"); // TODO: If object is ArrayList? System.out.println("B"); } }
我如何填写TODO注释以检查ArrayList上的generics? 这有可能吗? (如果可能的话,我更愿意在不实施更多课程的情况下这样做。)
Observable应该只发送一种类型的数据。
public class ModelA extends Observable { public void notify() { this.setChanged(); this.notifyObservers(new ArrayList()); } } public class ModelB extends Observable { public void notify() { this.setChanged(); this.notifyObservers(new ArrayList()); } }
另一种方法是将ArrayList 和ArrayList 放入一个类中。 您可以通过该课程通知您的观察员。
您可以使用instanceof
查看您的对象是什么类型,但是您滥用了该模式。
我们的想法是Observable
有一个定义良好的接口, Observer
需要知道的是使用API来传递通知。
知道Observable
究竟是什么的逻辑不应该在代码中混合。
从您的问题听起来,我有2 Observable
,他们应该让他们自己的听众专门感兴趣的通知。 没有一个组合