woowacourse-study / 2022-modern-java-in-action

우아한테크코스 4기 모던 자바 인 액션 스터디
10 stars 4 forks source link

자바 8에 추가된 함수형 인터페이스에 대해 알아보자 #30

Open sure-why-not opened 2 years ago

sure-why-not commented 2 years ago

문제

책에서는 Predicate, Consumer, Function 함수형 인터페이스에 대해서만 설명해주었다. 그 외에 자바 8에 추가된 함수형 인터페이스에 대해 짚고 넘어가자.

선정 배경

최근 미션에서 BiPredicate 를 사용한 예시를 몇번 보았는데, 코드가 훨씬 간결해지고 가독성이 높아지는 것을 볼 수 있었다. 직접 함수형 인터페이스를 구현해서 잘 사용하는 것도 중요하지만, 자바에서 만든 검증된 표준 함수형 인터페이스를 잘 활용할 줄 아는 것도 중요하다고 생각한다.

관련 챕터

sure-why-not commented 2 years ago

Supplier

UnaryOperator

UnaryOperator func1 = n -> n 2; UnaryOperator func2 = n -> n 3; Integer result = func1.andThen(func2).apply(10);


**BinaryOperator**
- Type T의 인자 두개를 받고, 동일한 Type T 객체를 리턴하는 함수형 인터페이스

BinaryOperator binaryOperator = (n1, n2) -> n1 + n2; Integer sum = binaryOperator.apply(10, 100);


**BiPredicate**
- 2개의 인자를 받고 boolean을 리턴하는 함수형 인터페이스이다.

BiPredicate<Integer, Integer> biPredicate = (n1, n2) -> n1 > n2; boolean result = biPredicate.test(10, 100);


**BiConsumer**
- 2개의 인자를 받고 리턴 값이 없는 함수형 인터페이스

BiConsumer<Integer, Integer> biConsumer = (n1, n2) -> System.out.println(n1 * n2); biConsumer.accept(10, 20);


**BiFunction**
- 2개의 인자(Type T, U)를 받고 1개의 객체(Type R)를 리턴하는 함수형 인터페이스

BiFunction<String, String, String> func1 = (s1, s2) -> { String s3 = s1 + s2; return s3; }; String result = func1.apply("Hello", "World");