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<String> list = Arrays.asList("1","2"); // ミュータブル
list.set(0,"3");
System.out.println(list.get(0)); // 3
}
}

view raw
gistfile1.txt
hosted with ❤ by GitHub

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

これに対し、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<String> list =List.of("1","2"); // イミュータブル
list.set(0,"3"); // ここでエラー
System.out.println(list.get(0));
}
}

view raw
gistfile1.txt
hosted with ❤ by GitHub

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

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

  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA