Collections.emptyList() vs. 新しいリストインスタンス
1. 前書き
この短いチュートリアルでは、Collections.emptyList()と新しいリストインスタンスの違いを説明します。
2. 不変性
java.util.Collections.emptyList()と新しいリストの主な違い(例: new ArrayList<>()は不変性です。
Collections.emptyList()は、変更できないリスト(java.util.Collections.EmptyList)を返します。
新しいリストインスタンスを作成するとき、実装に応じて変更できます。
@Test
public void givenArrayList_whenAddingElement_addsNewElement() {
List mutableList = new ArrayList<>();
mutableList.add("test");
assertEquals(mutableList.size(), 1);
assertEquals(mutableList.get(0), "test");
}
@Test(expected = UnsupportedOperationException.class)
public void givenCollectionsEmptyList_whenAdding_throwsException() {
List immutableList = Collections.emptyList();
immutableList.add("test");
}
3. オブジェクト作成
ソースコードに示されているCollection.emptyList() creates a new empty list instance only once:
public static final List EMPTY_LIST = new EmptyList<>();
public static final List emptyList() {
return (List) EMPTY_LIST;
}
4. 読みやすさ
空のリストを明示的に作成する場合は、Collections.emptyList()が元の意図をより適切に表現します。 new ArrayList<>()。
5. 結論
この記事では、Collections.emptyList()と新しいリストインスタンスの違いに焦点を当てました。
いつものように、完全なソースコードはover on GitHubで利用できます。