Dans la pratique, est-il préférable de retourner une liste vide comme ce:
Ou comme ce:
Ou est-ce complètement dépendant de ce que vous allez faire avec la liste retournée ?
La principale différence est que, Collections.emptyList()
renvoie un immuable liste, c'est à dire, une liste à laquelle vous ne pouvez pas ajouter des éléments.
Dans les rares cas où vous ne voulez modifier la liste retournée, ce ne serait donc pas une option.
Je dirais que le fait de revenir une liste immuable est parfaitement bien (et même la façon préférée) tant que le contrat (documentation) ne fait pas explicitement état différemment.
La mise en œuvre de l' emptyList
se présente comme suit:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
donc, si votre méthode (qui retourne une liste vide) est appelée très souvent, cette approche peut même vous donner des performances légèrement meilleures.
Collections.emptyList
est immuable, il existe donc une différence entre les deux versions. Vous devez donc prendre en compte les utilisateurs de la valeur renvoyée.
Le renvoi de new ArrayList<Foo>
crée toujours une nouvelle instance de l'objet, ce qui entraîne un très léger surcoût qui peut vous donner une raison d'utiliser Collections.emptyList
. J'aime utiliser emptyList
simplement parce que c'est plus lisible.
J'irais avec Collections.emptyList()
si la liste retournée n'est modifiée d'aucune façon (car la liste est immuable), sinon j'irais avec l'option 2.
L'avantage de Collections.emptyList()
est que la même instance statique est renvoyée à chaque fois et qu'il n'y a donc pas de création d'instance pour chaque appel.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.