Learn & Run

Java - 함수형 인터페이스와 람다 표현식 본문

Java

Java - 함수형 인터페이스와 람다 표현식

iron9462 2021. 1. 13. 08:49

목표

 

RxJava에서 사용되는 Java의 기본지식을 리뷰해보고, Java 8부터 지원하는 함수형 인터페이스와 람다의 개념을 이해해보고 사용해보도록 합니다. 

 

 

 

1. 함수형 인터페이스

 

  • Java의 인터페이스입니다.
  • 단 하나의 추상 메서드만 가지고 있는 인터페이스입니다. (예외로 Java 8에서 새롭게 도입된 Predicate, Consumer 인터페이스처럼 Default 메서드는 포함할 수 있습니다)
  • 함수형 인터페이스의 메서드를 람다식으로 작성해서 다른 메서드의 파라미터로 전달할 수 있습니다.
  • 람다식 자체를 해당 함수형 인터페이스를 구현한 클래스의 인스턴스로 취급합니다.
  • Java 8에서 새롭게 추가된 함수형 인터페이스(Predicate, Consumer, Function) 외에 기존에 작성되어 있는 하나의 추상 메서드만 가지고 있는 Java 인터페이스(Comparable, Runnable) 또한 함수형 인터페이스로 취급할 수 있습니다.

 

 

2. 람다 표현식

 

  • 함수형 인터페이스를 구현한 클래스이며 익명 클래스의 메서드를 단순화 한 표현식입니다.
  • 함수형 인터페이스의 메서드를 람다 표현식으로 작성하여 다른 메서드의 파라미터로 전달할 수 있습니다.
  • 즉, 람다 표현식 전체를 해당 함수형 인터페이스를 구현한 클래스의 인스턴스로 취급합니다.

 

 

3. 람다 표현식의 구성

 

  • 람다 파라미터 : 함수형 인터페이스에서 구현해야 될 메서드가 전달받아야 할 파라미터
  • 람다 몸체 : 함수형 인터페이스에서 구현해야 될 몸체

 

 

  • 람다식 사용전과 사용후

 

 

 

4. 함수 디스크립터(Function Descriptor)

 

  • 함수형 인터페이스의 추상 메서드를 설명해놓은 시그니처를 함수 디스크립터라고 합니다.
  • Java 8에서는 java.util.function 패키지로 다양한 새로운 함수형 인터페이스를 지원합니다. 

출처 : https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EB%A6%AC%EC%95%A1%ED%8B%B0%EB%B8%8C%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-1/

 

 

  • Predicate 예제

 

 

  • Consumer 예제

 

 

 

  • Function 예제