2

2D オブジェクト配列列を 1D 文字列配列としてキャストしようとしています。データ自体を取得するのに問題はありませんが、実行時エラーを引き起こすのはデータ型です。

スレッド「AWT-EventQueue-0」での例外 java.lang.ClassCastException: java.lang.String は [Ljava.lang.String; にキャストできません。

これは、私が使用しているコード フラグメントの例です。

Object[][] currentData = BackOffice.getData();
String[] dataWanted = null;

    for (int i=0; i<currentData.length; i++)
        dataWanted = (String[])currentData[i][1];

(String[]) を使用してキャストを回避できると思っていましたが、明らかにそうではありません...どんな助けにも感謝します!

4

2 に答える 2

3

私が正しく理解しているなら、あなたはしたいです:

String[] dataWanted = new String[currentData.length];

for (int i=0; i<currentData.length; i++)
    dataWanted[i] = currentData[i][1];
于 2012-05-08T14:21:22.580 に答える
1

currentDataはオブジェクトの 2D 配列であるためcurrentData[i][1]、単一のオブジェクトとして評価されます。dataWanted文字列の配列です。単一のオブジェクトを配列型にキャストすることはできません。さらに、項目を挿入する前に、配列をサイズで初期化する必要があります。各オブジェクトをdataWanted配列に配置したい場合は、次のようにする必要があります。

String[] dataWanted = new String[currentData.length];
for (int i = 0; i < currentData.length; i++) {
    dataWanted[i] = (String)currentData[i][1];
}

これが達成しようとしているものでない場合は、質問を編集してより具体的にしてください。

于 2012-05-08T14:28:35.120 に答える