Collections.emptyList () et nouvelle instance de liste

Collections.emptyList() vs. Nouvelle instance de liste

1. introduction

Dans ce court didacticiel, nous illustrerons la différence entreCollections.emptyList() et une nouvelle instance de liste.

2. Immutabilité

La différence fondamentale entrejava.util.Collections.emptyList() et une nouvelle liste, par exemple new ArrayList<>() est l'immuabilité.

Collections.emptyList() renvoie une liste (java.util.Collections.EmptyList) qui ne peut pas être modifiée.

Lors de la création d'une nouvelle instance de liste, vous pouvez la modifier en fonction de l'implémentation:

@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. Création d'objet

Collection.emptyList() creates a new empty list instance only once, comme indiqué dans le code source:

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

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

4. Lisibilité

Lorsque vous souhaitez créer explicitement une liste vide, alorsCollections.emptyList() exprime mieux l'intention d'origine, par exemple. new ArrayList<>().

5. Conclusion

Dans cet article précis, nous nous sommes concentrés sur les différences entre lesCollections.emptyList() et une nouvelle instance de liste.

Comme toujours, le code source complet est disponibleover on GitHub.