Collections.emptyList() vs. Nova Instância da Lista
1. Introdução
Neste breve tutorial, ilustraremos a diferença entreCollections.emptyList() e uma nova instância de lista.
2. Imutabilidade
A diferença principal entrejava.util.Collections.emptyList() e uma nova lista, por exemplo new ArrayList<>() é imutabilidade.
Collections.emptyList() retorna uma lista (java.util.Collections.EmptyList) que não pode ser modificada.
Ao criar uma nova instância da lista, você pode modificá-la, dependendo da implementação:
@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. Criação de Objetos
Collection.emptyList() creates a new empty list instance only once, conforme mostrado no código-fonte:
public static final List EMPTY_LIST = new EmptyList<>();
public static final List emptyList() {
return (List) EMPTY_LIST;
}
4. Legibilidade
Quando você deseja criar explicitamente uma lista vazia,Collections.emptyList() expressou melhor a intenção original, por exemplo, new ArrayList<>().
5. Conclusão
Neste artigo direto, nos concentramos nas diferenças entreCollections.emptyList() e uma nova instância de lista.
Como sempre, o código-fonte completo está disponívelover on GitHub.