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

gryoh·2022년 3월 7일
0

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

- 함수형 인터페이스란

함수형 인터페이스는 단 하나의 추상 메소드만이 선언된 인터페이스이다.

SAM(Single Abstract Method) 인터페이스라고도 한다.

- 함수형 인터페이스 특징

함수형 인터페이스와 람다를 이용하면 구조적으로 유연하고 간결한 코드를 작성할 수 있다. 인터페이스에 @FunctionalInterface 어노테이션을 붙여주면 컴파일에러를 방지할 수 있다.

함수형 인터페이스 사용예시

예시 1)

public interface WelcomeSomething {
    String hello(String name); // 추상메소드

    static void printName(){
        System.out.println("GRYOH");
    }
}

예시2)

@FunctionalInterface
public interface WelcomeSomething {
    String hello(String name); // 추상메소드
}

예시1과 같이 일반 메소드는 작성 가능하다

예시1예시2 방법 모두 가능하지만 예시2를 권고한다.

(@FunctionalInterface 어노테이션 추가 후 추상메소드 추가하면 컴파일 에러 발생하는 것을 확인 할 수 있다)

예시 3)
함수형 인터페이스가 아니다 -> 추상메소드는 한 개만 존재해야한다

컴파일 에러는 발생하지 않지만 함수형 인터페이스를 사용하는 쪽에서 multiple non-overriding abstract methods found in interface xxx 컴파일 에러 발생

@FunctionalInterface
public interface WelcomeSomething {
    String hello(String name);  // 추상메소드1
    void doit();	            // 추상메소드2
    static void printName(){
        System.out.println("GRYOH");
    }
}
public static void main(String[] args) { 
    WelcomeSomething welcomeSomething3 = (name) -> { return name; }; //컴파일 에러

0개의 댓글