Что произойдет, если вызвать get() на пустом Optional в Java?

«Что произойдет, если вызвать get() на пустом Optional в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Вызов get() на пустом Optional (например, созданном через Optional.ofNullable(null) или Optional.empty()) приведет к выбрасыванию NoSuchElementException.

Пример опасного кода:

Optional<String> emptyOpt = Optional.ofNullable(null);
String value = emptyOpt.get(); // Выбросит NoSuchElementException: No value present

Правильные альтернативы get(): Метод get() следует использовать только когда вы уверены, что значение присутствует. В остальных случаях применяйте безопасные методы:

Метод Использование
orElse(T other) Вернуть значение или запасной вариант.
orElseGet(Supplier) Лениво вычислить запасной вариант.
orElseThrow() Выбросить NoSuchElementException (более явно, чем get()).
orElseThrow(Supplier) Выбросить кастомное исключение.
ifPresent(Consumer) Выполнить действие, если значение есть.

Пример безопасного подхода:

Optional<String> userInput = Optional.ofNullable(request.getParameter("name"));
// Безопасное извлечение
String name = userInput.orElse("Guest");
// Или с действием
userInput.ifPresent(n -> System.out.println("Hello, " + n));