[英]Observer pattern issues Java
我试图在Java中实现一个简单的观察者模式,但遇到了一个似乎无法解决的问题。 我有以下几点:
public interface Observable {
public void addView(Observer view);
public void removeView(Observer view);
public void notifyView();
public Object getUpdate(Observer view);
}
public class Data implements Observable {
//List to hold all of the views observing data changes.
private ArrayList<Observer> views = new ArrayList<Observer>();
private ArrayList<Integer> data = new ArrayList<Integer>();
...
@Override
public void notifyView() {
for (Observer view: views){
//issue here
view.update(data);
}
}
...
}
当我尝试调用view.update()方法时,我的notifyView()方法出现错误。 我得到的错误是:
The method update(Observable, Object) in the type Observer is not applicable for the arguments (ArrayList<Integer>)
我不明白这一点,因为我有Observer接口,并且类设置如下:
public interface Observer {
public void update(ArrayList<Integer> data);
}
public class View implements Observer{
@Override
public void update(ArrayList<Integer> data) {
// TODO Auto-generated method stub
}
}
我曾尝试阅读其他文章,但没有任何帮助。 我是否忽略了导致此问题的某些内容?
您的代码不是使用Observer类,而是使用Java的Observer类
https://docs.oracle.com/javase/7/docs/api/java/util/Observer.html
您应该将Observer接口名称重命名为另一个,以查看问题。 例如MyObserver。 您与JDK标准Observer接口(请参阅Data.java导入部分)和Observer接口发生冲突。 接口名称更加准确。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.