함수 디스크립터
보통 자바의 람다 표현식(Lambda Expression)의 사용 용도를 두가지로 정의하는데, 하나는 람다 함수로서의 용도 그리고 다른 하나는 함수형 인터페이스의 추상 메서드의 역할을 설명해놓은 시그니처로서 쓰인다.
그중 함수 디스크립터(Function Descriptor)는 단어 그대로 함수가 어떤 입력값을 받고 어떤 반환값을 주는지에 대한 설명을 람다 표현식 문법으로 표현한 것을 의미한다고 보면 된다.
예를들어, () -> void 는 파라미터 리스트가 없으며 void를 반환하는 함수를 의미하는 디스크립터며, (int, int) -> double 는 두개의 int를 파라미터로 받아 double형 자료를 반환하는 함수를 설명한다고 보면 된다.
이처럼 함수 디스크립터는 주로 java.util.function 패키지의 함수형 인터페이스를 람다식으로 사용할때 어떤 역할을 하는 함수인지 간략하게 보여주는 시그너처이다.
※ 참고
타입스크립트 진영에서는 아예 함수 자체 타입을 람다식(화살표 함수)로 표현하는데 이것도 함수 디스크립터 일종이라고 봐도 무방하다.
함수형 인터페이스 | 함수 디스크립터 (추상 메서드가 어떤 역할을 하는지 간략하게 설명) |
Predicate | T -> boolean |
Consumer | T -> void |
Function<T,R> | T -> R |
Supplier | ( ) -> T |
BiPredicate<L, R> | (L, R) -> boolean |
BiConsumer<L, R> | (T, U) -> void |
BiFunction<T,U,R> | (T, U) -> R |
Runnable | () -> void |
참고