2017-01-11 59 views
1

我試圖構建一個簡單的Observer-Observable,當我調用notifyObservers();時,它不起作用並繼續保持。有人知道該怎麼辦?試圖構建一個簡單的Observer-Observable

P類:

import java.util.Observable; 

public class P extends Observable{ 
    public void func(){ 
     notifyObservers();  
    } 

} 

等級的OB:

import java.util.Observable; 
import java.util.Observer; 

public class Ob implements Observer{ 

    P p; 
    public Ob(P p) { 
     this.p=p; 
    } 

    public void run(){ 

     p.func(); 

    } 

    @Override 
    public void update(Observable o, Object arg) { 
     System.out.println("SUceesssed"); 
    } 

} 

運行:

public class run { 

    public static void main(String[] args) { 

    P p=new P(); 

     Ob o=new Ob(p); 
     p.addObserver(o); 
     o.run(); 
    } 

} 
+1

只有當Observable發生變化時,notifyObservers()纔會執行任何操作,請參閱https://docs.oracle.com/javase/7/docs/api/java/util/Observable.html#notifyObservers() – mazaneicha

+0

我這樣做沒有改變只是跳躍的更新方法? – Tal32422

回答

3

你必須通知觀察員

public class P extends Observable{ 
    public void func(){ 
    hasChanged(); 
    notifyObservers(); 
    } 

} 
之前調用
+0

我怎樣才能做到這一點,而不僅僅是跳轉更新方法? – Tal32422