메서드 정의(추상메서드)가 1개만 있는 인터페이스
보통 람다식을 사용해 함수를 인자로 보내기 위해 사용한다.
추상 메서드의 제약이 1개이므로, default, static 같이 구현체가 있는 메서드
는 여러개 존재해도 상관 없다.
public interface Testable {
void test(String data);
}
@FunctionalInterfacce
어노테이션은 해당 인터페이스가 함수형 인터페이스인지 조건을 검사하기 위해 사용한다 (@Override
와 비슷한 이유라 생각하면 된다)
물론, 해당 어노테이션을 사용하지 않아도 Functional Interface 의 조건을 충족한다면, 함수형 인터페이스로서 동작한다.
다만, 향후 유지보수 및 가독성을 위해 붙여주는 편이 낫다 (해당 인터페이스가 FunctionalInterface 임을 인지하지 못하고 추상 메서드를 추가할 경우 오류가 나므로)
자바에서는 기본적으로 보편적 사용이 가능한 함수형 인터페이스들을 제공한다.
자바에서 제공하는 함수형 인터페이스로는
등이 있다.