Зачем использовать опционально.более необязательно.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 151

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, вы возвращаете необязательное значение.