Интерфейс Function в Java

Author: Tatyana Milkina

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 Курс 'Java для начинающих' на Udemy
Читайте также:
Комментарии