3

如果一个实现 Observer 的类可以观察多个 Observable 类,那么该类如何知道哪个 Observable 类发生了变化?

public class MainActivity extends Activity implements Observer {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ObservableClass1 oc1 = new ObservableClass1();
        oc1.addObserver(this);
        ObservableClass2 oc2 = new ObservableClass2();
        oc2.addObserver(this);
    }

    @Override
    public void update(Observable observable, Object data) {

        //How will I know which observable hasChanged?
    }
}

我找不到任何方法observable来比较或知道它的类名。

或者我应该使用

observable.getClass().getSimpleName();

并进行字符串比较?

4

2 回答 2

0

您还可以使用instanceof运算符来检查哪个Observable类称为更新,例如:

     @Override
     public void update(Observable observable, Object data) {

       if (observable instanceof ObservableClass1) {
          //prcess ObservableCLass1 update here
       } else if (observable instanceof ObservableClass2) {
          //process ObservableClass update here
       } else {
          //some default action or error
       }
    }
于 2013-08-07T16:53:55.160 回答
0

有可能的 。java observable 对象可以转换为它的子类,这样你就可以实现这个(使用 instanceof 运算符)

于 2015-06-09T22:11:04.713 回答