2012-07-03 1247 views
5

Đối với một số lý do quan sát của tôi không được thông báo khi tôi gọi các phương pháp notifyObserver, sử dụng các đối tượng java.util.Observable:Java Observer Pattern không thông báo

đây là đối tượng quan sát của tôi:

public class ProjectManager extends Observable 
{ 
... 
public void updateProjects(String project, String pack, String source, String ARN) 
{ 
    ... 
if(newSource) 
    { 
    tempPack.add(tempSource); 
    System.out.println("Notify observers: " + this.countObservers()); 
    this.notifyObservers(); 
    } 
     ... 
     } 

tôi có thể thấy từ đầu ra của tôi rằng người quan sát đang được thêm vào nhưng không được thông báo.

và đối tượng quan sát của tôi trông như thế này:

public class IDE implements Observer 
{ 

@Override 
public void update(Observable o, Object arg) { 

    System.out.println("Notified"); 

} 

Đối với một số lý do lạ lùng đối tượng quan sát được là không được thông báo gì cả. Tôi có làm gì sai ở đây không?

Trả lời

13

Bạn cần setChanged trước khi bạn notifyObservers

+4

+1. Một lý do khác để không thích thực hiện 'Observable' của Java. –

+0

bit của một gotcha lớn nhưng tôi đoán nó có thể có ý nghĩa từ một quan điểm giao dịch. –