Java 정리, 람다식과 함수형인터페이스 - 1. 함수형 인터페이스란?
※이 글은 Java SE 8 기준으로 작성되었습니다.
함수형 인터페이스(Functional interface)란?
추상메서드를 하나만 선언한 것
Single Abstract Method(SAM)라고도 함.
static메서드와 default메서드는 추상메서드가 아니므로 상관이 없음.(Java SE 9 이상에서는 private도 사용가능)
@FunctionalInterface 어노테이션을 이용하여 함수형인터페이스를 체크가능
함수형 인터페이스의 예
@FunctionalInterface
interface Foo {
static void x() {}
default void y() {}
void z();
}
잘못된 함수형 인터페이스의 예
// 추상메서드가 두 개 선언되어있으므로 함수형 인터페이스가 아님.
interface Foo {
void x();
void y();
}
// 추상메서드가 선언 되어있지않으므로 함수형 인터페이스가 아님.
interface Bar {
static void x(){}
}
대표적인 함수형 인터페이스
- Runnable
- Supplier
- Predicate
- Consumer
- Function