簡體   English   中英

Java的觀察者模式問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM