Java 一个类可以观察到多个可见物吗?
如果实现Observer的类可以观察到多个可观察类,那么该类如何知道哪个可观察类发生了变化Java 一个类可以观察到多个可见物吗?,java,android,observer-pattern,Java,Android,Observer Pattern,如果实现Observer的类可以观察到多个可观察类,那么该类如何知道哪个可观察类发生了变化 public class MainActivity extends Activity implements Observer { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ObservableClas
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();
并进行字符串比较?您还可以使用
instanceof
操作符检查称为更新的可观察的类,例如:
@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
}
}
这是可能的。java observable对象可以强制转换到它的子类,通过这种方式,您可以实现这一点(使用instanceof操作符)不,java不能强制转换observable到另一个类,那么这段代码就不起作用了。