Зачем использовать опционально.более необязательно.ofNullable?
при использовании Java 8 Optional
класс, есть два способа, в которых значение может быть обернуто в необязательный.
String foobar = <value or null>;
Optional.of(foobar); // May throw NullPointerException
Optional.ofNullable(foobar); // Safe from NullPointerException
Я понимаю Optional.ofNullable
это единственный безопасный способ использования Optional
, почему Optional.of
существуют вообще? Почему бы просто не использовать Optional.ofNullable
и быть на безопасной стороне во все времена?
3 ответа:
Ваш вопрос основан на предположении, что код, который может выбросить
NullPointerException
- Это хуже, чем код, который не может. Это предположение неверно. Если вы ожидаете, что вашfoobar
никогда не является нулем из-за логики программы, гораздо лучше использоватьOptional.of(foobar)
Как вы увидитеNullPointerException
Что будет означать, что ваша программа имеет ошибку. Если вы используетеOptional.ofNullable(foobar)
иfoobar
случаетсяnull
из-за ошибки, то ваша программа будет молча продолжать неправильно работать, что может быть больше катастрофа. Таким образом, ошибка может возникнуть намного позже и было бы гораздо труднее понять, в какой момент все пошло не так.
кроме того, если вы знаете, что ваш код не должен работать, если object равен null, вы можете создать исключение с помощью
Optional.orElseThrow
String nullName = null; String name = Optional.ofNullable(nullName).orElseThrow(NullPointerException::new);
@Тагир-Валеев, пожалуйста, исправьте, если я ошибаюсь.
опционный должен главным образом быть использован для результатов обслуживаний так или иначе. На службе вы знаете, что у вас под рукой и возвращать необязательно.(someValue) если у вас есть результат и возврат необязательный.в этом случае некоторое значение никогда не должно быть null и still, вы возвращаете необязательное значение.