Optional
Контейнер, в котором либо есть значение, либо его нет, — замена возврату `null`.
Доступно с: Java 8
Синтаксис
public final class Optional<T>Примеры
Метод, который может ничего не найти:
Optional<String> findEmail(String name) {
Map<String, String> emails = Map.of("Anna", "anna@mail.com");
return Optional.ofNullable(emails.get(name));
}
void main() {
IO.println(findEmail("Anna").orElse("no email"));
IO.println(findEmail("Oleg").orElse("no email"));
IO.println(findEmail("Oleg"));
}Результат:
anna@mail.com
no email
Optional.emptyПримечания
Optional делает отсутствие значения явной частью типа: вызывающий код видит, что результата может не быть. Его используют как тип возвращаемого значения, но не для полей классов и параметров методов. Сам Optional никогда не должен быть null.
См. также
- Optional.ofNullable() — Оборачивает значение, которое может быть `null`, в `Optional`.
- Optional.orElse() — Возвращает значение или запасной вариант, если значения нет.
- Optional.map() — Преобразует значение внутри `Optional`, если оно есть.
- Stream.findFirst() — Возвращает первый элемент потока в виде `Optional`.
В учебнике
- Optional — Класс Optional в Java: значение, которого может не быть, создание через of и empty, orElse, map, ifPresent и orElseThrow.