본문 바로가기

개발

[Java] Supplier, Consumer, Function 함수형 인터페이스

 


 

1. Supplier

Supplier <T>

(T는 Parameter Type을, R은 Return Type을 의미한다)

 

Supplier는 매개변수는 없고, 반환값만 존재하는 경우 사용된다.

 

    @Test
    @DisplayName("Supplier를 활용한 양수 확인")
    void supplier() {
        Predicate<Integer> isPositive = n -> n > 0;
        Supplier<Integer> getValue = () -> (int) (Math.random() * 100) + 1;

        assertThat(isPositive.test(getValue.get())).isTrue();
    }

 

 

2. Consumer

Consumer <T>

 

Consumer는 매개변수만 있고, 반환값이 없는 경우 사용된다.

 

    @Test
    @DisplayName("Consumer를 활용한 출력")
    void consumer() {
        Consumer<String> printStrUpper = str -> System.out.println(str.toUpperCase());
        printStrUpper.accept("consumer");
    }

 

 

    @Test
    @DisplayName("Consumer의 andThen을 활용한 method chaining 출력")
    void consumerAndThen() {
        List<String> citrus = Arrays.asList("orange", "mandarin", "tangerine");
        Consumer<List<String>> printList = list -> {
            for(String fruit : list) {
                System.out.println(fruit);
            }
        };

        Consumer<List<String>> printListUpper = list -> {
            for(String fruit : list) {
                System.out.println(fruit.toUpperCase());
            }
        };

        printList.andThen(printListUpper).accept(citrus);
    }

 

 

3. Function

Function<T, R>

 

Fuction은 일반적인 함수로, 하나의 매개변수를 받아서 결과를 반환할때 사용된다.

 

    @Test
    @DisplayName("Function을 활용한 양수 확인")
    void function() {
        Function<Integer, Integer> getFirstDigit = n -> n % 10;

        assertThat(getFirstDigit.apply(123)).isEqualTo(3);
    }

 

 


 

 

https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html

 

java.util.function (Java Platform SE 8 )

Interface Summary  Interface Description BiConsumer Represents an operation that accepts two input arguments and returns no result. BiFunction Represents a function that accepts two arguments and produces a result. BinaryOperator Represents an operation u

docs.oracle.com