Почему findFirst () генерирует исключение NullPointerException, если первый найденный элемент имеет значение null?
Почему это бросить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
Первый пункт вstrings
являетсяnull
, что является вполне приемлемым значением. Более того,findFirst()
возвращаетНеобязательный, что имеет еще больше смысла дляfindFirst()
уметь справлятьсяnull
s.
РЕДАКТИРОВАТЬ: обновилorElse()
быть менее двусмысленным.