观察者模式问题Java

时间:2016-02-18 16:04:15

标签: java observer-pattern

我正在尝试在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

    }

}

我曾尝试阅读其他帖子,但没有任何帮助我。我有什么东西可以忽略导致这个问题吗?

2 个答案:

答案 0 :(得分:2)

您的代码未使用您的Observer类,而是使用Java的Observer类

<强> https://docs.oracle.com/javase/7/docs/api/java/util/Observer.html

答案 1 :(得分:0)

您应该将Observer接口名称重命名为另一个以查看问题。例如MyObserver。您与JDK标准Observer接口(请参阅Data.java导入部分)和Observer接口存在冲突。使用接口名称更准确。