Почему 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() уметь справлятьсяnulls.

РЕДАКТИРОВАТЬ: обновилorElse() быть менее двусмысленным.

Ответы на вопрос(5)

Ваш ответ на вопрос