Overview
- 함수형 인터페이스란 1개의 추상 메서드를 갖는 인터페이스
- java 8 부터 인터페이스는 default method를 포함할 수 있다.
- 여러 개의 default method가 있어도 추상 메서드가 오직 하나면 함수형 인터페이스
- 자바의 람다 표현식은 함수형 인터페이스만 사용 가능
기본 함수형 인터페이스
🏃♀️ Runnable
- 인자와 반환 값이 없는 인터페이스
() -> void
- 이름 그대로 실행만 할 수 있다.
사용하기
🌳 Supplier
- 인자를 받지 않고 T타입의 객체를 반환
() -> T
- 공급자
사용하기
👩 Consumer
- T 타입의 객체를 인자로 받고 반환 값은 없음
T -> void
- andThen을 사용하면 두 개 이상의 Consumer를 연속적으로 실행할 수 있다.
사용하기
🎃 Function
- T 타입의 인자를 받고 R 타입의 객체를 반환
T -> R
사용해보기
compose
- 두 개의 Function으로 새로운 Function 객체를 만들어주는 메서드
- andThen과 실행 순서가 반대이다.
- compose에 인자로 전달되는 Function을 먼저 수행한다.
🐢 Predicate
- T 타입 인자를 받고 boolean을 반환 `T -> boolean
사용해보기
and() or()
- and() : 두 개의 Predicate가 true일 때 true 반환
- or() : 두 개의 Predicate 중 하나만 true여도 true 반환
isEqual()
- 인자로 전달되는 객체와 같인지 체크하는 Predicate 객체를 만든다.
🗻 Callable
- 인자가 없고 T 타입 객체를 반환한다.
() -> T
- call() 메소드 수행 중 Exception을 발생시킬 수 있다.
Callable과 Runnable의 차이
- Runnable은 Thread에 인자로 바로 전달할 수 있다.
- Callable은 Tread에 인자로 전달할 수 없다.