Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Справочник Java

Optional.map()

Преобразует значение внутри `Optional`, если оно есть.

Доступно с: Java 8

Синтаксис

<U> Optional<U> map(Function<? super T, ? extends U> mapper)

Параметры

ПараметрТипОписание
mapperFunction<? 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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.