스터디/이펙티브 자바

[Effective Java] Item 44. 표준 함수형 인터페이스를 사용하라

📝 작성 : 2022.07.03  ⏱ 수정 : 
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 애너테이션을 사용하는 것이 좋습니다.

  1. 해당 클래스의 코드나 설명 문서를 읽을 이에게 람다용으로 설계된 것임을 알려줍니다.
  2. 인터페이스가 하나의 추상 메서드만을 담고있어야 컴파일되게 해줍니다.
  3. 유지보수 과정에서 누군가 실수로 메서드를 추가하지 못하게 막아줍니다.
반응형