2016-04-04 13 views
0

私が直面する問題は、Observableの第三者API notifyObserversから来るオブジェクトデータをどのように分離するかです。Observable - Observer(java.lang.ClassCastException:[Ljava.lang.Object; can cast to ..)

プログラムはObserverパターンに基づいています& ObserverをObserverのUpdateメソッドをトリガーする第三者API Observableに正常にリンクすることができました。

コード:notifyObservers 観察可能:オブザーバーUpdateメソッドで

public void newData(String car,String model,CustFeedBack csFeed){ 
    setChanged(); 
    notifyObservers(new Object[]{car,model,csFeed}); 
} 

は私がから来るオブジェクト内3つの各データを取得することができるように ARG をキャストしようとしていますnofifyObservers

@Override 
public void update(Observable observable, Object arg) { 
     dataSubject = (DataSubject) arg; 
     System.out.println(dataSubject.length); 
     display(); 
} 

私はjava.lang.ClassCastExを取得していますception:[Ljava.lang.Object;キャストすることはできません...私が直面している問題が明確であることを願って&私はどのように3つの別々の部分にオブジェクトデータを分解するために進むことができるかに関するガイダンスを待っています。ここで

+1

'update 'があなたの' notifyObservers'メソッドによって呼び出されていると思いますか?それらの 'update'メソッドにオブジェクトの配列を渡していて、この配列を型にキャストしようとしています。代わりにオブジェクトの配列にキャストする必要があります。 'Object [] values =(Object [])arg' – Alex

+0

@Alex私もそれを試みましたが、まだClassCastException(java.lang.ClassCastException:[Ljava.lang.Object;はキャストできません[Lpkg1.Model.DataSubject;) – iCoder

+0

問題の行にブレークポイントを置くと、デバッガは何を言うのですか( 'dataSubject =(DataSubject)arg;')? 'arg'には何が含まれていて、何がその型ですか?たぶんそれはあなたが期待していないものです。 – Alex

答えて

1

は答えとして私のコメントです:)

updateは、私が推測する、あなたのnotifyObservers方法で呼び出されていますか?これらの更新メソッドにオブジェクトの配列を渡していて、この配列を型にキャストしようとしています。代わりにオブジェクトの配列にキャストする必要があります。 Object[] values = (Object[])arg