【发布时间】:2016-02-18 16:04:15
【问题描述】:
我正在尝试在 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>)
我不明白这一点,因为我有我的观察者接口,类设置如下:
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
}
}
我尝试阅读其他帖子,但没有任何帮助。有什么我忽略的东西导致了这个问题吗?
【问题讨论】:
-
what @Tichodroma siad - 你可能在你的 IDE 和
import java.util.Observer甚至import java.util.*在你的.java文件的标题中启用了自动导入 - 删除它,代码应该可以工作.这正是SSCCE 的用途——如果你创建了它,那么没有 SO,你很可能已经解决了你的问题。 -
是的,就是这样。我导入了 Java Observer,甚至没有注意到。傻视。谢谢@vaxquis
标签: java observer-pattern