素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

投稿日: 2020年2月7日
最終更新日:

【コレクションオブジェクト】要素を操作した際にUnsupportedOperationExceptionが出る原因と対応方法【Java】

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/04/03 21:33:13時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

Anker PowerCor

created by Rinker
Anker
¥4,990 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

旅行には必須の大容量モバイルバッテリー!

[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット

created by Rinker
THE NORTH FACE(ザノースフェイス)
¥33,430 (2024/04/03 21:42:09時点 Amazon調べ-詳細)

防水暴風で耐久性抜群なので旅行で大活躍です!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2024/04/03 21:42:16時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

レッドブル エナジードリンク 250ml×24本

created by Rinker
Red Bull(レッドブル)
¥4,000 (2024/04/03 21:42:12時点 Amazon調べ-詳細)

翼を授けよう!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥14,935 (2024/04/03 21:42:10時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥7,500 (2024/04/03 21:42:14時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

スポンサーリンク

336×280




java.lang.UnsupportedOperationException

概要

こちらは、ListMapなどが固定長な形式な際にaddputなどをしようとすると発生します。

主に、Collections.emptyList()Collections.emptyList()Arrays.asList()などで生成したコレクションオブジェクトにaddputremoveなどの操作を加えようとすると発生します。

配列をリストに変換する際にArrays.asListはよく使うと思うので、覚えておくと良いでしょう。

finalは関係ない

このエラーが発生した際によく間違えるのが、finalで定義した変数に対して操作をしているから、と勘違いしてしまう人も少なくありません。

finalによる挙動は、一度代入した変数への再代入を防ぐ事になるので、一度代入した変数が持っているメソッドを使って中身を操作する分には問題ありません

また、エラーのタイミングについても実行時エラーでなくビルドエラーになります。

覚えておくと良いでしょう♪

サンプル

MapListについて簡単なサンプルをまとめてみました。

Map

Collections.emptyMap

new HashMap

こちらは正常に処理が終了します。

List

Collections.emptyList

new ArrayList

こちらは正常に処理が終了します。

Arrays.asList

Arrays.asListで変換したリストに操作を加えたい場合

Arrays.asListを使って生成したリストに操作を加えたい場合は、以下のようにnew ArrayListでラップすることで可能になるので覚えておくと良いでしょう♪

終わりに

以上のように、よく使うような記述ですがちょっと使い方を間違えるとバグを潜ませる事になってしまいます。

この辺の挙動の違いを覚えておくだけでも、エンジニアとしてのレベルが少し上がるので是非頭の片隅に置いておくと良いでしょう♪

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , , , , ,

blogenist

Author: blogenist

関連記事

YouTubeも見てね♪

お名前.comサイドバー