5
List<String> list = getNames();//this returns a list of names(String).

String[] names = (String[]) list.toArray(); // throws class cast exception.

なぜだか分からない?任意の解決策、説明をいただければ幸いです。

4

2 に答える 2

5

これは、パラメータなしが s のtoArray配列を生成するためObjectです。String次のように、出力配列をパラメーターとして受け取り、 s の配列を渡すオーバーロードを呼び出す必要があります。

String[] names = (String[]) list.toArray(new String[list.size()]);

Java 5 以降では、キャストを削除できます。

String[] names = list.toArray(new String[list.size()]);
于 2013-07-29T02:39:33.933 に答える
0

のクラスからキャストしようとしていObject[]ます。クラス自体は type の配列ですObject。要素を新しい配列に追加して、1 つずつ個別にキャストする必要があります。

または、これを行うことで、すでに実装されているメソッドを使用できます。

list.toArray(new String[list.size()]);
于 2013-07-29T02:39:47.860 に答える