본문

[2018.01.22] 32. 함수형 인터페이스 (Java 8)

도입

이번 포스팅에서는 Java 8의 함수형 인터페이스(Functional Interface)에 대해 알아볼 예정이다.



개념

자바 공식 문서에서는 "람다 표현식과 메소드 참조를 위해 타겟 타입을 제공하는 개념" 이다. 

그리고 함수형 인터페이스는 하나의 추상 메소드만 가진다.

(출처 - https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html)

또한, 람다를 사용하는 이유에서 알아봤던 것처럼 인터페이스를 사용해 사용자에게 더 좋은 코드 가독성을 제공하기 위한 목적을 가지고 있다.



예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 함수형 인터페이스 (O)
public interface IAdder {
    int add(int a, int b);
}
 
// 함수형 인터페이스 (X)
// IAdder를 상속하므로 추상 메소드가 2개
public interface IDetailAdder extends IAdder {
    int add(double a, double b);
}
 
// 함수형 인터페이스 (X)
// 추상 메소드가 존재하지 않는다.
public interface INothing {
}
cs



대표적인 예제 - Runnable

가장 대표적인 함수형 인터페이스는 Runnable이다. Runnable은 아래와 같이 1개의 추상 메소드를 가지는 함수형 인터페이스이다.



실습 - 함수형 인터페이스 + 람다식

함수형 인터페이스 + 람다식 적용 X

함수형 인터페이스 + 람다식 적용 O

1
2
3
4
5
6
7
new Thread(new Runnable() {
    @Override
    public void run() {
        Log.d("heepie"
            "run: " + "Anonymous Method");
        }
}).start();
cs
1
2
3
4
new Thread(() -> {
    Log.d("heepie",
        "run: " + "Functional Method");
}).start();
cs




#함수형 인터페이스 #Functional Interface

공유

댓글