Интерфейс Function

Урок 14

Интерфейс Function


Function<T, R> встроенный функциональный интерфейс, добавленный в Java SE 8 в пакет java.util.function. Принимает значение в качестве аргумента одного типа и возвращает другое значение. Часто используется для преобразования одного значения в другое.

@FunctionalInterface
public interface Function<T, R> {
    R apply(T t);
}

Функциональный дескриптор интерфейса:

 

T -> R

Пример 1. Использование интерфейса Function

import java.util.function.Function;

public class FunctionDemo1 {
    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);

Пример 2. Использование интерфейса Function

import java.util.function.Function;

public class FunctionDemo2 {
    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";
        System.out.println(f1.andThen(f2).compose(f3).apply("Compose"));
        System.out.println(f1.andThen(f2).andThen(f3).apply("AndThen"));
    }
}

Статический метод интерфейса Function<T,R>:

static <T> Function<T, T> identity()

Возвращает интерфейс Function, который всегда возвращает входной параметр.

Пример 3. Использование интерфейса Function

import java.util.function.Function;

public class FunctionDemo3 {
    public static void main(String[] args) {
        Function<String, String> f = Function.identity();
        System.out.println(f.apply("Some Value"));
    }
}

 

Источники: Java 8 java.util.function.Function Tutorial with Examples, Chapter TEN - Java Built-In Lambda Interfaces, Java 8 Programmer II Study Guide by Esteban Herrera.



0 comments
Leave your comment: