List<String> list = getNames();//this returns a list of names(String).
String[] names = (String[]) list.toArray(); // throws class cast exception.
なぜわからないのですか?任意の解決策、説明は高く評価されます。オブジェクト配列を文字列配列にキャストするとClassCastExceptionがスローされる
List<String> list = getNames();//this returns a list of names(String).
String[] names = (String[]) list.toArray(); // throws class cast exception.
なぜわからないのですか?任意の解決策、説明は高く評価されます。オブジェクト配列を文字列配列にキャストするとClassCastExceptionがスローされる
これは、パラメータなしのtoArray
がObject
の配列を生成するためです。あなたはこのように、パラメータとして出力配列を受け取るオーバーロードを呼び出し、String
の配列を渡す必要があります。Java 5で
String[] names = (String[]) list.toArray(new String[list.size()]);
以降あなたはキャストをドロップすることができます。
String[] names = list.toArray(new String[list.size()]);
Object[]
のクラスからキャストしようとしています。クラス自体は、タイプObject
の配列です。個々の要素を1つずつキャストして要素を新しい配列に追加する必要があります。
それとも、すでにこれを行うことで、そのために実装される方法を使用できます。
list.toArray(new String[list.size()]);
がここに余計なキャストではないですか?コンパイラを手元に置いてはいけませんが、どうしたらいいかわかりません。また、共同/対照差異に関するいくつかの説明へのリンクは、私が考えている答えを完全にするでしょう。 – Voo
@Voo Java 5以降のみ。 Java 5より前は必要でした。 – dasblinkenlight
@dasblinkenlight私は、Java 5がまだ一般的に使われていることは知らなかった。 –