Hallo Java-Entwickler,
Ich weiß, dass das Thema ein bisschen sein kann, in advance
da das JDK8 noch nicht veröffentlicht ist (und vorerst sowieso nicht ..), aber ich habe einige Artikel über die Lambda-Ausdrücke und insbesondere den Teil gelesen, der sich auf die neue Sammlungs-API namens Stream bezieht.
Hier ist das Beispiel aus dem Artikel des Java-Magazins (es ist ein Otterpopulationsalgorithmus ..):
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());
Meine Frage ist, was passiert, wenn in der Mitte der internen Iteration von Set einer der Otter null ist?
Ich würde erwarten, dass eine NullPointerException ausgelöst wird, aber vielleicht stecke ich immer noch im vorherigen Entwicklungsparadigma (nicht funktionsfähig) fest. Kann mich jemand aufklären, wie damit umgegangen werden soll?
Wenn dies wirklich eine NullPointerException auslöst, finde ich die Funktion ziemlich gefährlich und muss nur wie folgt verwendet werden:
- Entwickler, um sicherzustellen, dass es keinen Nullwert gibt (möglicherweise mit einem vorherigen .filter (o -> o! = Null))
- Entwickler, um sicherzustellen, dass die Anwendung niemals einen Nullotter oder ein spezielles NullOtter-Objekt generiert, mit dem umgegangen werden soll.
Was ist die beste Option oder eine andere Option?
Vielen Dank!