今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Listに要素を追加しようとしたらUnsupportedOperationExceptionだった

AndroidアプリでListViewに設定するAdapterに新しい要素を追加しようとしたところで例外が発生してた。Listの元をたどると、

    List<Hoge> list = Arrays.asList(new Hoge[0]);

ってやってた。
その先は確認してないけど、Arrays.asList()でList化したオブジェクトは、要素の変更ができないんじゃないかと。

いちお、ぐぐってみた。

すると、Arraysのドキュメントに書かれてた。

Returns a fixed-size list backed by the specified array.

fixed-sizeって書いてるから、要素の追加や削除はできないけど、更新はできるのかも。試してないけど。

Arrays#asList() を使わずに、ArrayListインスタンスを生成したら問題なく動作した。

    List<Hoge> list = new ArrayList<Hoge>();