2017-01-11 16 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