etc

자바 함수형 인터페이스(Functional Interface) 정리

조부장 2022. 9. 4. 21:53

함수형 인터페이스란?

함수형 인터페이스는 1개의 추상 메소드(abstract method)를 갖고 있는 인터페이스입니다. SAM(Single Abstract Method)이라고도 부릅니다.

 

일반형

인터페이스 파라미터 타입 리턴 타입
Runnable, Callable    
Function<T, R> T R
Consumer T  
Predicate T boolean
Supplier   T
UnaryOperator T T

Runnable은 java.lang 패키지에, Callable은 java.util.concurrent 패키지에, 나머지 함수형 인터페이스는 java.util.function 패키지에 들어 있습니다.

위 인터페이스들을 기본형으로, 인자가 2개인 BiConsumer, BiPredicate 등이 추가로 정의되어 있습니다.

 

Function<T, R>

public interface Function<T, R> {
    R apply(T t);
}

가장 일반적인 함수형 인터페이스인 Function은 한 인자를 받아 결과를 반환하는 함수를 나타내는 인터페이스입니다.

 

Consumer

public interface Consumer<T> {
    void accept(T t);
}

Consumer는 파라미터를 받아 아무것도 반환하지 않는 함수형 인터페이스입니다

 

Predicate

public interface Predicate<T> {
    boolean test(T t);
}

Predicate는 파라미터 하나를 받아 조건에 따라 true, false를 반환하는 함수를 나타냅니다.

 

Supplier

public interface Supplier<T> {
    T get();
}

Supplier는 한 객체를 반환하는 함수를 나타냅니다.

 

UnaryOperator

public interface UnaryOperator<T> extends Function<T, T> { ... }

UnaryOperator(단항 연산자)는 Function의 특수형입니다. T 타입 객체를 받아 T 타입 객체를 반환하는 함수를 나타냅니다.

예를 들어 수학의 -(negate) 연산자를 보면 숫자를 받아 -1을 곱한 숫자를 반환하는데 이걸 UnaryOperator의 한 예로 볼 수 있습니다.

반응형