Метод apply
Метод apply является основным абстрактным методом
функционального интерфейса Function.
Он принимает один аргумент типа T и возвращает
результат типа R. Иными словами, в первый
(и единственный) параметр мы передаем значение,
которое нужно преобразовать, а метод возвращает
преобразованное значение согласно логике,
заложенной в реализации функции.
Чаще всего apply используется неявно,
например, когда мы передаем лямбда-выражение
в метод map потока. Но его можно
вызывать и напрямую, если у нас есть объект
типа Function.
Синтаксис
R apply(T t)
Пример
Давайте создадим функцию, которая удваивает
переданное число, и применим ее через apply:
import java.util.function.Function;
public class Main
{
public static void main(String[] args)
{
Function<Integer, Integer> doubleIt = x -> x * 2;
int res = doubleIt.apply(5);
System.out.println(res);
}
}
Результат выполнения кода:
10
Пример
Давайте создадим функцию, которая преобразует строку в ее длину, и применим ее к строке:
import java.util.function.Function;
public class Main
{
public static void main(String[] args)
{
Function<String, Integer> length = s -> s.length();
int res = length.apply("abcde");
System.out.println(res);
}
}
Результат выполнения кода:
5
Пример
Чаще всего apply вызывается неявно внутри
метода map. Давайте создадим поток из
строк и преобразуем каждую из них в верхний регистр:
import java.util.List;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
List<String> list = List.of("a", "b", "c", "d", "e");
List<String> res = list.stream()
.map(s -> s.toUpperCase())
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[A, B, C, D, E]