RIAトピックス
リッチクライアント/RIAを主テーマに取り扱います。Flex、Ajax、AIR、Silverlight、JavaFX、etc。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【Java】Arrays.asList(String[])の注意点
先日、配列をListに変換するメソッドArrays.asList(String string)で、はまった事象がありましたのでまずは以下のソースをご覧下さい。

String[] str = new String[] {"aaa", "bbb"};
List list = Arrays.asList(str);
list.remove(0);


↑これを実行するとUnsupportedOperationExceptionが発生します。
発生場所は「list.remove(0);」になります。

どういう事かというと、Arrays.asList(String[])で返されるListにはremoveやaddメソッドが実装されていないんです。(add/removeメソッドは任意のオペレーション)
removeやaddは一般的なメソッドですし、eclipseのデバックで型を見ると「Arrays$ArrayList」となっているのでしばらく原因がわかりませんでした。

解決策としては↓の通りで、ArrayListなどの実装されているクラスでラップしてあげて下さい。

List list = new ArrayList(Arrays.asList(str));

例外が起こってみればすぐわかることですが、開発中にもよくありそうな事象ですのでArrays.asList(String[])を使用するときには思い出して使用してください。

Java の java.util.Arrays.asList について少し調べてみた 【お だ のスペースより】
http://d.hatena.ne.jp/odashinsuke/20090623/1245762058

配列から任意の項目を削除する方法について 【@IT より】
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10048&forum=12

K.Y
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

copyright © 2005 RIAトピックス all rights reserved.
Powered by FC2ブログ.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。