Warum findFirst() werfen einer NullPointerException, wenn das erste element, es findet null ist?

Warum hat dieser Wurf ein java.lang.NullPointerException?

List<String> strings = new ArrayList<>();
        strings.add(null);
        strings.add("test");

        String firstString = strings.stream()
                .findFirst()      //Exception thrown here
                .orElse("StringWhenListIsEmpty");
                //.orElse(null);  //Changing the `orElse()` to avoid ambiguity

Das erste Element in strings ist null, das ist ein durchaus akzeptabler Wert. Darüber hinaus findFirst() gibt ein Optional, das macht sogar mehr Sinn für findFirst() handhaben zu können nulls.

EDIT: aktualisiert die orElse() zu sein weniger zweideutig.

null ist nicht vollkommen akzeptabler Wert... mit "" statt
obwohl ich mit der String hier, was ist, wenn es eine Liste, stellt eine Spalte in der DB? Der Wert der ersten Zeile dieser Spalte können null.
Ja, aber in java null ist nicht akzeptabel..mit der Abfrage auf null in die db
null ist ein durchaus akzeptabler Wert in Java allgemein. Insbesondere ist es ein gültiges element für eine ArrayList<String>. Wie jeder andere Wert, jedoch gibt es Einschränkungen auf das, was mit ihm getan werden kann. "Verwenden Sie nicht immer null" nicht nützliche Ratschläge, wie Sie sich nicht vermeiden lässt.
Ich vermute, dass durch die Zeit, die Sie rufen findFirst(), es gibt nichts, was Sie tun möchten.

InformationsquelleAutor neverendingqs | 2015-09-08

Schreibe einen Kommentar