Java Core junior

Optional — основные методы и антипаттерны?

Ответ

isPresent/isEmpty — проверка. ifPresent(consumer) — действие если есть (возвращает void). orElse(default) — готовое значение по умолчанию, вычисляется всегда (eager). orElseGet(supplier) — ленивый, вызывается только при отсутствии значения. map/flatMap — трансформация (flatMap когда функция сама возвращает Optional). Антипаттерн: Optional.get() без проверки и использование Optional как поля класса или параметра метода.

Разбор: orElse(default) принимает готовое значение и вычисляется всегда (eager), а orElseGet(supplier) принимает лямбду и вызывается лениво только при отсутствии значения — в первом дистракторе они перепутаны. map оборачивает результат функции в Optional, а flatMap нужен когда функция сама возвращает Optional (иначе получится Optional<Optional<T>>) — во втором дистракторе роли перевёрнуты. ifPresent ничего не возвращает (void), он лишь выполняет Consumer.

Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.

Заказать гайд Пройти тест
новые гайды и свежие вопросы с собесов — первыми в Telegram Смотреть гайды Подписаться