Почему это выбрасывает 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()
возвращает Optional, что еще более усугубляет возможность findFirst()
обрабатывать null
s.
EDIT: обновление orElse()
будет менее двусмысленным.