[Java] ArrayList#toArrayをString[]にキャストする
ArrayList#toArrayメソッドで、リストを配列に変換できます。
この時の戻り値はObject[]となります。
List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); Object[] result = list.toArray();
このままでは使い勝手が悪いために、通常は本来の型にキャストしようとするわけですが、
List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); String[] result = (String[]) list.toArray();
このように書くと、ClassCastExceptionが発生してしまいます。
正解は、
String[] result = (String[]) list.toArray(new String[]{});
このように、toArrayの引数にキャストする型の空配列を指定する必要があります。
とても分かりづらく、コードから意味が読み取りづらいです。
知らない人が見ると、このコードの引数は何のために指定しているんだろうと思います。
もう少しわかりやすい指定方法にしてほしかったですね。
2016/01/25追記
以下のように書いてもOKです。大して変わりませんが。。
[Java]
String[] result = list.toArray(new String[0]);
[/Java]
== ランキングに参加しています。ぜひクリックお願いします ==
[Excel] Excelのユーザー定義書式に条件指定で値が変わるように指定する [Excel] Excelのユーザー定義書式に条件指定で値が変わるように指定する