No Programming, No Life

新しいNPNLです。http://d.hatena.ne.jp/fumokmm/ から引っ越してきました。

配列のキャスト

以下を実行するとjava.lang.ClassCastExceptionが発生する。*1

 1: Object[] objArray = new Object[]{
 2:     "aaa",
 3:     "bbb",
 4:     "ccc"
 5: };
 6: String[] strArray = (String[]) objArray;
 7: for (String str : strArray) {
 9:     System.out.println(str);
10: }

これは、Object配列(Object)を一気にString配列(String)にキャストできないからのようです。
しかたないので、いったんCollectionにしてから戻すとうまくいく。

 6: String[] strArray = Arrays.asList(objArray).toArray(new String[objArray.length]);
}

ちなみにやっぱりGroovyだと、最初の書き方で問題なく動きます。*2
一応参考に。

Object[] objArray = ["aaa", "bbb", "ccc"]
String[] strArray = (String[]) objArray
for (str in strArray) println str

*1:動作確認: java version "1.6.0_07"

*2:動作確認: Groovy Version: 1.5.6