La differenza principale è che Collections.emptyList()
restituisce un immutabile elenco, ad esempio un elenco a cui non è possibile aggiungere elementi.
Nei rari casi in cui l'utente fa desidera modificare l'elenco restituito, ciò non rappresenta un'opzione.
Direi che restituire una lista immutabile è perfettamente soddisfacente (e anche il modo preferito) purché il contratto (documentazione) non dichiari esplicitamente in modo diverso.
Inoltre, emptyList()
might not create a new object with each call.
implementazioni di questo metodo non è necessario creare un oggetto List separato per ciascuna chiamata. È probabile che l'utilizzo di questo metodo abbia costi comparabili con l'utilizzo del campo con nome simile. (A differenza di questo metodo, il campo non fornisce la sicurezza di tipo.)
L'attuazione di emptyList
appare come segue:
public static final <T> List<T> emptyList() {
return (List<T>) EMPTY_LIST;
}
Quindi, se il metodo (che restituisce una lista vuota) viene chiamato molto spesso , questo approccio potrebbe anche darti prestazioni leggermente migliori sia della CPU che della memoria.
Quindi, 'Collections.emptyList()' può essere più adatto per, ad esempio, controllo degli errori e simili? – mre
Sì, lo direi. I client API – aioobe
non riceveranno 'NullPointerException' restituendo' Collections.emptyList() 'invece di' null'. – realPK