Language/Java

함수형 인터페이스 (Functional Interface)

by Donghwan 2023. 1. 31.

함수형 인터페이스 (Functional Interface)

  • Java는 기본적으로 객체지향 언어이므로 순수함수와 일반함수를 다르게 취급하고 있습니다. 이러한점을 해결하기 위해 함수형 인터페이스가 등장했습니다.
  • 함수를 1급 객체처럼 다룰 수 있게 해주는 Annotation입니다.
  • 인터페이스에 선언하여 단 하나의 추상 메소드만을 갖도록 제한하는 역할을 합니다.
  • 함수형 인터페이스를 사용하는 이유는 Java의 람다식이 함수형 인터페이스를 반환하기 때문입니다.

 

기본 제공 함수형 인터페이스

  • Supplier<T>
    • 매개변수 없이, get() 함수를 통해 T 타입을 리턴하는 경우
  • Consumer<T>
    • T 타입의 매개변수 가지며, accept() 함수를 통해 Void를 리턴하는 경우
    • 또한 andThen()이라는 함수를 통해 연쇄작용 할 수 있습니다.
  • Function<T, R>
    • T 타입의 매개변수를 가지며, apply라는 함수로 R 타입을 리턴을 하는 경우
    • Consumer와 마찬가지로 andThen()이라는 함수를 통해 연쇄작용 할 수 있습니다.
    • 추가적으로 compose() 함수를 통해 우선 실행할 것을 지정할 수 있습니다.
    • 마지막으로 identity 함수가 존재하는 이는 자기 자신을 반환하는 static 함수입니다.
  • Predicate<T>
    • T 타입의 매개변수를 가지며, test() 라는 함수를 통해 Boolean 타입을 리턴하는 경우

 

메서드 참조

  • 함수형 인터페이스를 람다식이 아닌 일반함수를 사용하여 참조하는 방식입니다.
  • 3가지 조건을 만족하여야 합니다.
    • 함수형 인터페이스의 매개변수 타입과 일반함수의 매개변수 타입이 일치하여야 합니다.
    • 함수형 인터페이스의 매개변수 개수와 일반함수의 매개변수 개수가 일치하여야 합니다.
    • 함수형 인터페잇의 반환형과 일반함수의 반환형이 일치해야 합니다.
  • 전역함수, 생성자 역시 메서드 참조가 가능합니다.
 

GitHub - dev-donghwan/donghwan-study: donghwan-personal-study-repository

donghwan-personal-study-repository. Contribute to dev-donghwan/donghwan-study development by creating an account on GitHub.

github.com

 

728x90
반응형

'Language > Java' 카테고리의 다른 글

Thread Pool  (0) 2023.02.07
Thread in Java  (0) 2023.02.07
람다식 (Lamda Expression)  (0) 2023.01.31
[Java] Exception  (0) 2021.11.26
[Java] Collection - (2) List란?  (0) 2021.11.12

댓글