«1. Введение

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

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

Основное различие между java.util.Collections.emptyList() и новым списком, например. new ArrayList\u003c\u003e() — неизменность.

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() лучше выражает исходное намерение, например новый ArrayList\u003c\u003e().

5. Заключение

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

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