[JAVA] JAVA 8 함수형 인터페이스

2022. 7. 31. 13:57Web/JAVA

  1. 함수형 인터페이스란 ? 

     - 추상메서드를 딱 하나만 가지고 있는 인터페이스

     - SAM(Single Abstract Method) 인터페이스

     - @FuntionalInterface 어노테이션을 가지고 있는 인터페이스

 

  2. 자바에서 함수형 프로그래밍이랑 ?

    - 함수를 First class object로 사용할 수 있다. 

    - 순수 함수 (Pure function) 

    - 사이드 이팩트가 없다. (함수 밖에 있는 값을 변경하지 않는다.)

    - 상태가 없다. (함수 밖에 있는 값을 사용하지 않는다.) 

    - 고차 함수 (Higher-Order Function)

    - 함수가 함수를 매개변수로 받을 수 있고 함수를 리턴할 수도 있다.

    - 불변성

 

  3. 자바에서 기본적으로 제공하는 함수형 인터페이스

      Function<T , R>

        - T타입을 받아서 R타입을 리턴하는 함수인터페이스

           R apply(T t)

         - 함수 조합용 메서드      
            compose - compose안 함수 실행후 밖에 함수 실행

               andThen - 첫번째함수 실행후 다음함수 실행하고 리턴

    BiFuntion<T, U, R>

     - 두개의값(T,U)을 받아서 R타입을 리턴하는 함수인터페이스

        R apply(T t, U u)

   Consumer<T>

     - T 타입을 받아서 아무값도 리턴하지 않는 함수 인터페이스

        void Accept(T t)

   Supplier<T>

   - T 타입의 값을 제공하는 함수 인터페이스

      T get()

    Predicate<T>

    - T 타입을 받아서 boolean을 리턴하는 함수 인터페이스

       boolean test(T t)

    - 함수 조합용 메소드

       And

       Or

       Negate

    UnaryOperator<T>

    - Function<T, R>의 특수한 형태로, 입력값 하나를 받아서 동일한 타입을 리턴하는 함수 인터페이스

    BinaryOperator<T>

   - BiFunction<T, U, R>의 특수한 형태로, 동일한 타입의 입렵값 두개를 받아 리턴하는 함수 인터페이스