In Java 8 Sto sostituendo sempre più i valori di ritorno Collection
con Stream
.Flusso di ritorno anziché elenco
Allora, dove avrei una volta avuto:
public List<Element> getElementList() {
return elements;
}
ora sto usando:
public Stream<Element> streamElements() {
return elements.stream();
}
mie argomentazioni per questo sono:
- Si fa rispettare l'immutabilità del sottostante lista
- Nasconde il fatto che ci sia un elenco sottostante. Potrebbe essere successivamente modificato in un set o in un'altra struttura senza modificare la firma del metodo.
- Incapsula piacevolmente che l'utente del metodo dovrebbe fare qualcosa con gli articoli non con una lista.
- Può essere banalmente parallelised in seguito, se necessario.
Infatti ora, nel mio codice, restituendo un List
o qualche altra collezione è esplicitamente un riconoscimento del fatto che l'utente può prendere in considerazione la raccolta mutabile e dovrebbe essere in grado di cambiarlo.
Chiaramente alcuni di questi può essere realizzato con collezioni immutabili.
La mia domanda è: qualcuno può vedere qualche svantaggio con questo design? Ci sono vantaggi delle collezioni immutabili oltre la restituzione di un Stream
?
risposta qui: http://stackoverflow.com/questions/24676877/should-i-return-a-collection-or-a-stream/24679745#24679745 –
@BrianGoetz Posso avere la tua firma per favore: P –
Vedere anche http://stackoverflow.com/q/27179175/2711488 – Holger