Интерфейс Function в Java
java.util.function.Function - это встроенный функциональный интерфейс, добавленный в Java SE 8 в пакет java.util.function.
Принимает значение в качестве аргумента одного типа и возвращает другое значение. Часто используется для преобразования одного значения в другое:
@FunctionalInterface
public interface Function<T, R> {
R apply(T t);
}
Функциональный дескриптор интерфейса:
T -> R
Рассмотрим пример использования интерфейса Function:
import java.util.function.Function;
public class FunctionExample1 {
public static void main(String[] args) {
Function<Double, Long> function = d -> Math.round(d);
System.out.println(function.apply(5.7));
}
}
Методы по умолчанию интерфейса Function<T, R>:
default <V> Function<T, V> andThen(Function<? super R, ? extends V> after);
default <V> Function<V, R> compose(Function<? super V, ? extends T> before);
Следующий пример показывает разницу между этими методами:
import java.util.function.Function;
public class FunctionExample2 {
public static void main(String[] args) {
Function<String, String> f1 = s -> s + "1";
Function<String, String> f2 = s -> s + "2";
Function<String, String> f3 = s -> s + "3";
Function<String, String> f4 = s -> s + "4";
System.out.println(f1.andThen(f2).compose(f3).compose(f4).apply("Compose"));
System.out.println(f1.andThen(f2).andThen(f3).apply("AndThen"));
}
}
Статический метод интерфейса Function identity():
static <T> Function<T, T> identity()
Возвращает интерфейс Function, который всегда возвращает входной параметр. Рассмотрим пример использования:
import java.util.function.Function;
public class FunctionExample3 {
public static void main(String[] args) {
Function<String, String> f = Function.identity();
System.out.println(f.apply("Some Value"));
}
}
Курс 'Java для начинающих' на Udemy
Зарегистрируйтесь или войдите, чтобы иметь возможность оставить комментарий.