Java9のList.ofメソッドとArrays.asListメソッドの違い

Java9のList.ofメソッドとArrays.asListメソッドの違い

受託案件がJava9で開発なので最近Java9を勉強しています。

Arrays.asListメソッドで作成したListオブジェクトは要素を追加することはできませんが要素を変更することができます。

package jp.co.confrage;

import java.util.Arrays;
import java.util.List;

public class Sample001 {
  public static void main(String[] args) {
    List list = Arrays.asList("1","2"); // ミュータブル
    list.set(0,"3");
    System.out.println(list.get(0)); // 3
  }
}

変更可能なことをミュータブル(可変)と言います。

これに対し、Java9からはList.ofメソッドというファクトリメソッドが追加されており、簡単に初期化が出来るようになりました。

List.ofメソッドで作成したListオブジェクトは要素を変更すると、「UnsupportedOperationException」が発生します。変更不可なオブジェクトをイミュータブル(不変)と言います。

package jp.co.confrage;

import java.util.List;

public class Sample001 {

  public static void main(String[] args) {
    List list =List.of("1","2"); // イミュータブル
    list.set(0,"3"); // ここでエラー
    System.out.println(list.get(0));
  }
}

List.ofメソッドでは要素を追加することもできません。

Java9からはCollections.unmodifiableList()メソッドの使用回数が減りそうです。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました