2012-07-03 16 views
5

Z jakiegoś powodu moi obserwatorzy nie są zgłoszonej gdy zgłoszę metod notifyObserver, używając przedmiotów java.util.Observable:Java Wzorzec Obserwator nie powiadamiając

Oto moje obserwowalne obiektu:

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(); 
    } 
     ... 
     } 

Z mojego wyjścia widzę, że obserwator jest dodawany, ale nie jest powiadamiany.

i mój obiekt obserwator wygląda następująco:

public class IDE implements Observer 
{ 

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

    System.out.println("Notified"); 

} 

Z jakiegoś dziwnego powodu zaobserwować obiekt nie jest zgłoszona w ogóle. Czy robię coś złego tutaj?

Odpowiedz

13

Trzeba setChanged zanim ty notifyObservers

+4

+1. Kolejny powód, dla którego nie lubimy implementacji Java "Observable". –

+0

Trochę poważnego błędu, ale myślę, że to może mieć sens z punktu widzenia transakcji. –