如果实现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();
并进行字符串比较?
答案 0 :(得分: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
}
}
答案 1 :(得分:0)
有可能。 java observable对象可以强制转换为它的子类,这样就可以实现(使用instanceof运算符)