プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[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]

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

,

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください