Ответ
Вызов 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));