Collections.emptyList () vs. Nova Instância da Lista

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.