뭐든 즐기면서 ;)

JAVA 함수형 인터페이스란 본문

BACK/JAVA

JAVA 함수형 인터페이스란

Tada.*+ 2021. 11. 15. 20:10
728x90

※ 함수형 인터페이스란?

  • 개념

Single Abstract Method(SAM)라고 불리기도 하며, 오로지 1개의 추상 메소드를 갖는 인터페이스입니다.

JAVA8부터 함수형 인터페이스는 1개의 추상 메소드를 포함하여, default method를 포함할 수 있습니다.

추상 메소드의 경우 오로지 1개만 존재해야 하지만, default method의 경우 제한이 없습니다. 그리고 익명함수의 한 종류인 람다식이 이러한 함수형 인터페이스를 리턴합니다.

 

함수형 인터페이스를 사용하는 이유는, 어찌보면 람다식을 위한 것이라고 볼 수 있습니다.

람다식은 함수형 인터페이스를 리턴하기 때문에, 코드의 간결성을 위한 람다식과 함께 사용하기 위해 함수형 인터페이스를 사용한다고 보면 됩니다. 함수형 인터페이스(즉, 람다식)가 탄생하기 전에는 익명 클래스로 표현해 왔습니다.

 

  • 함수형 인터페이스를 작성할 시 유의사항
  1. 위에서 설명한 것과 같이 추상 메소드는 하나만 있어야 하며, default method와 static method의 개수 제한은 없습니다.
  2. @FunctionalInterface 라는 어노테이션을 사용하여 interface를 작성합니다. 이 어노테이션은 해당 interface가 함수형 인터페이스 조건에 부합한지 검사해줍니다.
  3. @FunctionalInterface 어노테이션 사용없이도 함수형 인터페이스로 동작하고 사용하는 데에는 문제 없지만, 함수형 인터페이스 조건에 부합한지에 대한 검증과 유지보수를 위해서는 사용해주는 것이 좋습니다.
  • 사용 방법
@FunctionalInterface
interface LambdaInterface {
    int max(int a, int b);
    
    default void sampleDefault() {
    	System.out.println("sampleDefault 출력");
    }
    
    default void sampleDefault2() {
    	System.out.println("sampleDefault2 출력");
    }
    
    static void sampleStatic() {
    	System.out.println("sampleStatic 출력");
    }
}

// 람다식을 사용하여 함수형 인터페이스를 반환 받아 선언한 변수에 대입.
public class Lambda {

    public static void main(String[] args) {
    	// 추상 메소드는 interface에 정의되어 있고, 식 구현은 람다식에서 합니다.
        LambdaInterface lambda = (int a, int b) -> a > b ? a : b;
        System.out.println( lambda.max(3, 5) );
        // 출력 : 5
        
        lambda.sampleDefault();
        // 출력 : sampleDefault 출력
        
        lambda.sampleDefault2();
        // 출력 : sampleDefault2 출력
        
        lambda.sampleStatic();
        // 출력 : sampleStatic 출력
    }

}

 

728x90

'BACK > JAVA' 카테고리의 다른 글

JAVA Servlet API  (0) 2022.05.03
Java 올림 / Java Math / Java Math ceil  (0) 2022.03.21
JAVA 개념 / JAVA 이론 / JAVA 기본개념  (0) 2021.11.14
JAVA 람다식 / 람다식  (0) 2021.11.12
JAVA 함수형 인터페이스 API  (0) 2021.11.11
Comments