List<String> list = getNames();//this returns a list of names(String).
String[] names = (String[]) list.toArray(); // throws class cast exception.
なぜだか分からない?任意の解決策、説明をいただければ幸いです。
List<String> list = getNames();//this returns a list of names(String).
String[] names = (String[]) list.toArray(); // throws class cast exception.
なぜだか分からない?任意の解決策、説明をいただければ幸いです。
これは、パラメータなしが s のtoArray
配列を生成するためObject
です。String
次のように、出力配列をパラメーターとして受け取り、 s の配列を渡すオーバーロードを呼び出す必要があります。
String[] names = (String[]) list.toArray(new String[list.size()]);
Java 5 以降では、キャストを削除できます。
String[] names = list.toArray(new String[list.size()]);
のクラスからキャストしようとしていObject[]
ます。クラス自体は type の配列ですObject
。要素を新しい配列に追加して、1 つずつ個別にキャストする必要があります。
または、これを行うことで、すでに実装されているメソッドを使用できます。
list.toArray(new String[list.size()]);