Ciao amici sviluppatori Java,
So che l'argomento potrebbe essere un po 'in in advance
quanto il JDK8 non è ancora stato rilasciato (e non per ora comunque ..) ma stavo leggendo alcuni articoli sulle espressioni Lambda e in particolare sulla parte relativa alla nuova API di raccolta nota come Stream.
Ecco l'esempio fornito nell'articolo di Java Magazine (è un algoritmo di popolazione di lontre ..):
Set<Otter> otters = getOtters();
System.out.println(otters.stream()
.filter(o -> !o.isWild())
.map(o -> o.getKeeper())
.filter(k -> k.isFemale())
.into(new ArrayList<>())
.size());
La mia domanda è: cosa succede se nel mezzo dell'iterazione interna di Set, una delle lontre è nulla?
Mi aspetto che venga generata una NullPointerException, ma forse sono ancora bloccato nel precedente paradigma di sviluppo (non funzionale), qualcuno può illuminarmi su come dovrebbe essere gestito?
Se questo genera davvero un'eccezione NullPointerException, trovo la funzione piuttosto pericolosa e dovrà essere utilizzata solo come di seguito:
- Sviluppatore per assicurarsi che non ci sia alcun valore nullo (magari utilizzando un precedente .filter (o -> o! = Null))
- Sviluppatore per assicurarsi che l'applicazione non generi mai null otter o uno speciale oggetto NullOtter da gestire.
Qual è l'opzione migliore o qualsiasi altra opzione?
Grazie!