Mediumoptionaljava8
Что такое Optional в Java?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Optional<T> (Java 8) — контейнер, который содержит значение T или пуст. Цель — явно выразить в сигнатуре возможное отсутствие значения и заставить caller обработать это.
Optional<String> findName(int id) {
return id > 0 ? Optional.of("user" + id) : Optional.empty();
}
// Хорошо: цепочка с дефолтом
String name = findName(1).orElse("unknown");
int len = findName(1).map(String::length).orElse(0);
// Плохо: isPresent + get — лучше map/orElse
if (findName(1).isPresent()) { String n = findName(1).get(); }- Создание:
Optional.of(x)(x ≠ null),Optional.ofNullable(x),Optional.empty(); - Избегать
get()(бросает NoSuchElementException) — использоватьorElse,orElseThrow; - Не использовать для полей класса (serialization, overhead), только для возвращаемых значений.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.