Optional.map()
Преобразует значение внутри `Optional`, если оно есть.
Доступно с: Java 8
Синтаксис
<U> Optional<U> map(Function<? super T, ? extends U> mapper)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| mapper | Function<? super T, ? extends U> | Преобразование значения. |
Возвращаемое значение
Optional<U>`Optional` с результатом или пустой.
Примеры
Цепочка без проверок на null:
record Address(String city) {}
record User(String name, Address address) {}
void main() {
Optional<User> user = Optional.of(new User("Anna", new Address("Paris")));
String city = user.map(User::address).map(Address::city).orElse("unknown");
IO.println(city);
Optional<User> nobody = Optional.empty();
IO.println(nobody.map(User::name).map(String::length).orElse(0));
}Результат:
Paris
0Примечания
На пустом Optional функция не вызывается и результат остаётся пустым. Если функция возвращает null, результат тоже станет пустым. Если функция сама возвращает Optional, используйте flatMap(), а для условия — filter().
См. также
- Optional.orElse() — Возвращает значение или запасной вариант, если значения нет.
- Stream.map() — Преобразует каждый элемент потока.
- Function — Функция, которая принимает значение типа `T` и возвращает значение типа `R`.
В учебнике
- Optional — Класс Optional в Java: значение, которого может не быть, создание через of и empty, orElse, map, ifPresent и orElseThrow.