Во-первых, просто чтобы ответить на ваш вопрос:
Означает ли "функция отображения" метод map () или аргумент map ()?
This "«Функция отображения» относится к аргументу, предоставленному методу map
типа Optional<T>
.
Чтобы упростить понимание, просто на мгновение забудьте о подстановочном знаке (?
), как мы моглиобойдемся без путаницы и сосредоточимся на типах T
и U
, упрощенной версии ниже:
public <U> Optional<U> map(Function<T, U> mapper) { ... }
- Где
T
представляет любой тип объекта в качестве ввода, а U
представляетлюбой тип в качестве вывода. Function<T, U> mapper
представляет функцию, принимающую объект типа T
и возвращающую значение типа U
Optional<U>
, является опциональной инкапсуляцией объектавведите U
.
Вы можете визуализировать функцию отображения следующим образом:
_ _ _ _ _ _ _ _ _
| |
| |
T ----->| logic | -----> U
| |
|_ _ _ _ _ _ _ _ _|
Итак, с учетом приведенной выше визуализации и вашего примера:
Optional<String> os1 = Optional.of("Optional String");
Optional<String> os2 = os1.map(s -> s.toUpperCase());
Функция, переданная методу map
типа Optional
(s -> s.toUpperCase()
), равна Function<String, String> mapper
ie T
в приведенной выше визуализации становится String
, а U
в приведенной выше визуализации становится String
, то есть
_ _ _ _ _ _ _ _ _
| |
| |
String -->| logic | ---> String
| |
|_ _ _ _ _ _ _ _ _|
Итак, когда указанная выше функция вызывается методом map
Необязательный тип, он будет выполнять некоторую операцию, представленную «логикой» выше в визуализации, в этом конкретном случае логика просто преобразует входную строку в строку в верхнем регистре.
Как только это будет сделано, метод map
типа Optional<T>
преобразует эту строку в верхнем регистре в необязательный объект, следовательно, он возвращает Optional<String>
.