함수형 인터페이스 (Functional Interface)
- Java는 기본적으로 객체지향 언어이므로 순수함수와 일반함수를 다르게 취급하고 있습니다. 이러한점을 해결하기 위해 함수형 인터페이스가 등장했습니다.
- 함수를 1급 객체처럼 다룰 수 있게 해주는 Annotation입니다.
- 인터페이스에 선언하여 단 하나의 추상 메소드만을 갖도록 제한하는 역할을 합니다.
- 함수형 인터페이스를 사용하는 이유는 Java의 람다식이 함수형 인터페이스를 반환하기 때문입니다.
기본 제공 함수형 인터페이스
- Supplier<T>
- 매개변수 없이, get() 함수를 통해 T 타입을 리턴하는 경우
- Consumer<T>
- T 타입의 매개변수 가지며, accept() 함수를 통해 Void를 리턴하는 경우
- 또한 andThen()이라는 함수를 통해 연쇄작용 할 수 있습니다.
- Function<T, R>
- T 타입의 매개변수를 가지며, apply라는 함수로 R 타입을 리턴을 하는 경우
- Consumer와 마찬가지로 andThen()이라는 함수를 통해 연쇄작용 할 수 있습니다.
- 추가적으로 compose() 함수를 통해 우선 실행할 것을 지정할 수 있습니다.
- 마지막으로 identity 함수가 존재하는 이는 자기 자신을 반환하는 static 함수입니다.
- Predicate<T>
- T 타입의 매개변수를 가지며, test() 라는 함수를 통해 Boolean 타입을 리턴하는 경우
메서드 참조
- 함수형 인터페이스를 람다식이 아닌 일반함수를 사용하여 참조하는 방식입니다.
- 3가지 조건을 만족하여야 합니다.
- 함수형 인터페이스의 매개변수 타입과 일반함수의 매개변수 타입이 일치하여야 합니다.
- 함수형 인터페이스의 매개변수 개수와 일반함수의 매개변수 개수가 일치하여야 합니다.
- 함수형 인터페잇의 반환형과 일반함수의 반환형이 일치해야 합니다.
- 전역함수, 생성자 역시 메서드 참조가 가능합니다.
728x90
반응형
'Language > Java' 카테고리의 다른 글
Thread Pool (0) | 2023.02.07 |
---|---|
Thread in Java (0) | 2023.02.07 |
람다식 (Lamda Expression) (0) | 2023.01.31 |
[Java] Exception (0) | 2021.11.26 |
[Java] Collection - (2) List란? (0) | 2021.11.12 |
댓글