Observable - 观察者(java.lang.ClassCastException:[Ljava.lang.Object;无法转换为..)
Observable - Observer (java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to..)
我面临的问题是如何隔离来自第 3 方的对象数据 API Observable 的 notifyObservers。
该程序是基于观察者模式的&我能够成功link观察者到第3方APIObservable,它触发了观察者中的更新方法。
代码: notifyObservers of Observable:
public void newData(String car,String model,CustFeedBack csFeed){
setChanged();
notifyObservers(new Object[]{car,model,csFeed});
}
在 Observer Update 方法中,我试图转换 arg 以便我可以从 nofifyObservers
获取对象中的 3 个数据中的每一个
@Override
public void update(Observable observable, Object arg) {
dataSubject = (DataSubject) arg;
System.out.println(dataSubject.length);
display();
}
我得到一个 java.lang.ClassCastException:[Ljava.lang.Object;不能转换为...希望我面临的问题很清楚,并等待有关如何继续将对象数据分解为 3 个独立部分的指导。
这是我的评论作为回答:)
update
被你的 notifyObservers
方法调用了,我猜?您正在将一个对象数组传递给那些更新方法,并试图将该数组转换为一个类型。我认为你应该将它转换成一个对象数组。应该是 Object[] values = (Object[])arg
我面临的问题是如何隔离来自第 3 方的对象数据 API Observable 的 notifyObservers。
该程序是基于观察者模式的&我能够成功link观察者到第3方APIObservable,它触发了观察者中的更新方法。
代码: notifyObservers of Observable:
public void newData(String car,String model,CustFeedBack csFeed){
setChanged();
notifyObservers(new Object[]{car,model,csFeed});
}
在 Observer Update 方法中,我试图转换 arg 以便我可以从 nofifyObservers
获取对象中的 3 个数据中的每一个@Override
public void update(Observable observable, Object arg) {
dataSubject = (DataSubject) arg;
System.out.println(dataSubject.length);
display();
}
我得到一个 java.lang.ClassCastException:[Ljava.lang.Object;不能转换为...希望我面临的问题很清楚,并等待有关如何继续将对象数据分解为 3 个独立部分的指导。
这是我的评论作为回答:)
update
被你的 notifyObservers
方法调用了,我猜?您正在将一个对象数组传递给那些更新方法,并试图将该数组转换为一个类型。我认为你应该将它转换成一个对象数组。应该是 Object[] values = (Object[])arg