Перейти к основному содержимому

Collections.emptyList() и новый экземпляр списка

· 1 мин. чтения

1. Введение

В этом кратком руководстве мы проиллюстрируем разницу между Collections.emptyList() и новым экземпляром списка.

2. Неизменность

Основное различие между java.util.Collections.emptyList() и новым списком, например, new ArrayList<>() , заключается в неизменности.

Collections.emptyList() возвращает список ( java.util.Collections.EmptyList ), который нельзя изменить.

При создании нового экземпляра списка вы можете изменить его в зависимости от реализации:

@Test
public void givenArrayList_whenAddingElement_addsNewElement() {
List<String> 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<String> immutableList = Collections.emptyList();
immutableList.add("test");
}

3. Создание объекта

Collection.emptyList() создает новый экземпляр пустого списка только один раз , как показано в исходном коде:

public static final List EMPTY_LIST = new EmptyList<>();

public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}

4. Удобочитаемость

Если вы хотите явно создать пустой список, тогда Collections.emptyList() лучше выражает исходное намерение, например , new ArrayList<>() .

5. Вывод

В этой статье мы сосредоточились на различиях между Collections.emptyList() и новым экземпляром списка.

Как всегда, полный исходный код доступен на GitHub .