2

ArrayList を使用して、文字列の配列からいくつかの文字列を格納しています。

ArrayList<String> list = new ArrayList<>();
list.add(strings[i]);

それらを別の関数に渡すために、それらを配列に戻しました。

foo((String[]) list.toArray());

これは私に例外を与えます:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

ここで何が間違っていますか?

4

2 に答える 2

5

メソッド呼び出しlist.toArray()は、Object[] 型の配列を返します。文字列のみが含まれていても、それを String[] にキャストすることはできません。

ただし、必要なタイプの初期配列を受け入れる List.toArray() の兄弟を使用して、タイプ String[] の配列を作成できます。

 foo( list.toArray( new String[ list.size() ] ) );
于 2013-04-28T19:54:17.620 に答える
1

You have to do

String[] t = new String[list.size()];
foo(list.toArray(t));
于 2013-04-28T19:55:42.333 に答える