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) { Listlist = 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) { Listlist =List.of("1","2"); // イミュータブル list.set(0,"3"); // ここでエラー System.out.println(list.get(0)); } }
List.ofメソッドでは要素を追加することもできません。
Java9からはCollections.unmodifiableList()メソッドの使用回数が減りそうです。
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント