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.