728x90
표준 함수형 인터페이스
java.util.function
패키지에는 총 43개의 함수형 인터페이스를 제공합니다. 이 중 6개 정도만 기억하면 나머지도 유추하기 쉽습니다.
UnaryOperator<T>
T apply(T t): 반환값과 인수의 타입이 같은 함수, 인수는 1개. String::toLowerCase
BinaryOperator<T>
T apply(T t1, T t2): 반환값과 인수의 타입이 같은 함수, 인수는 2개. BigInteger::add
Predicate<T>
boolean test(T t): 한 개의 인수를 받아서 boolean을 반환하는 함수. Collection::isEmpty
Function<T, R>
R apply(T t): 인수와 반환 타입이 다른 함수. Arrays::asList
Supplier<T>
T get(): 인수를 반환하지 않고 값을 반환, 제공하는 함수. Instant::now
Consumer<T>
void accept(T t): 한 개의 인수를 받고 반환값이 없는 함수. System.out::println
@FunctionalInterface
직접 만든 함수형 인터페이스에는 항상 @FunctionalInterface
애너테이션을 사용하는 것이 좋습니다.
- 해당 클래스의 코드나 설명 문서를 읽을 이에게 람다용으로 설계된 것임을 알려줍니다.
- 인터페이스가 하나의 추상 메서드만을 담고있어야 컴파일되게 해줍니다.
- 유지보수 과정에서 누군가 실수로 메서드를 추가하지 못하게 막아줍니다.
반응형
'스터디 > 이펙티브 자바' 카테고리의 다른 글
[Effective Java] Item46. 스트림에서는 부작용 없는 함수를 사용하라 (0) | 2022.07.10 |
---|---|
[Effective Java] Item45. 스트림은 주의해서 사용하라 (0) | 2022.07.10 |
[Effective Java] Item43. 람다보다는 메서드 참조를 사용하라 (0) | 2022.07.03 |
[Effective Java] Item42. 익명 클래스보다는 람다를 사용하라 (0) | 2022.07.03 |
[Effective Java] Item41. 정의하려는 것이 타입이면 마커 인터페이스를 활용하라 (0) | 2022.07.03 |