java8의 기능적 인터페이스 기능

@FunctionalInterface 주석으로 표시되고 하나의 추상 메서드만 포함하는 인터페이스는 기능적 인터페이스입니다.

1. 함수는 매개변수를 가지고 함수를 반환하며, 함수 함수의 표현은 매개변수를 받고 값을 반환하는 것입니다.

2. 컨슈머 소비 함수와 컨슈머 함수는 매개변수를 받고 반환값이 없는 형태로 표현

3.공급자는 매개변수를 받지 않고 데이터만 반환하는 공급 기능입니다.

4. 매개변수가 없고 리턴이 없는 실행 가능한 함수, 매개변수가 없고 리턴이 없는 함수로 표현됨

예 1:

   /**
     * 将该函数应用到给定的参数
     * @param t 函数的参数
     * @return 函数的结果
     */
    R apply(T t);
public static int testFunction(int i, Function<Integer,Integer> function) {
    
    
    return function.apply(i);
}
 
System.out.println(testFunction(2,i -> i * 2 + 1));

출력은 5

생산에 적용:
여기에 이미지 설명 삽입
여기에 이미지 설명 삽입
예 2:

  /**
    * 返回一个组合函数, 首先执行before function的apply方法, 将它的返回作为输入参数再应用当前的function
    */
    default <V> Function<V, R> compose(Function<? super V, ? extends T> before) {
    
    
        Objects.requireNonNull(before);
        return (V v) -> apply(before.apply(v));
    }
public static int testCompose(int a, Function<Integer, Integer> funA, 
   Function<Integer, Integer> funB) {
    
    
      return funA.compose(funB).apply(a);
}
 
System.out.println("compose"+testCompose(5, value -> value - 1,value -> value * 2));

결과: 먼저 value -> value * 2 >>5*2=10을 실행한 다음 value -> value - 1, 10-1=9를 실행합니다.

예 3:

   /**
    * 返回一个组合函数, 它是先调用当前函数的apply方法, 再将其结果作为输入参数传递给after function调用apply()
    */
    default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) {
    
    
        Objects.requireNonNull(after);
        return (T t) -> after.apply(apply(t));
    }
public static int andThen(int a, Function<Integer, Integer> funA, 
    Function<Integer, Integer> funB) {
    
    
         return funA.andThen(funB).apply(a);
 
System.out.println("andThen 结果:"+andThen(5, value -> value - 1,value -> value * 2));

먼저 value -> value - 1 >>5-1=4를 실행한 다음 value -> value * 2를 실행하고 결과는 8입니다.
여기에 이미지 설명 삽입

추천

출처blog.csdn.net/qq_38747892/article/details/131724133