[JAVA8] 자바에서 제공하는 함수형 인터페이스

이재훈·2023년 5월 2일
0

JAVA8

목록 보기
1/23

인프런 강의 "더 자바, JAVA8"(백기선님)의 강의를 듣고 정리한 글 입니다.
JAVA8에 추가된 핵심 기능들을 이해하기 쉽게 설명해 주시니 한번씩 들어보시는 것을 추천드립니다.

"더 자바, JAVA8 바로가기"


Java가 기본으로 제공하는 함수형 인터페이스

  • java.lang.function 패키지
  • 자바에서 미리 정의해둔 자주 사용할만한 함수 인터페이스
  • Function<T, R>
  • BiFunction<T, U, R>
  • Consumer <T>
  • Supplier<T>
  • Predicate<T>
  • UnaryOperator<T> = Function<T, R> T, R 같을 때
  • BinaryOperator<T> = BiFunction<T, U, R> T, U, R 같을 때

Function<T, R>

  • T 타입을 받아서 R 타입을 리턴하는 함수 인터페이스
    - R apply(T t)
  • 함수 조합용 메서드
    - andThen
    - compose
Function<Integer, Integer> plusTen = (i) -> i + 10;
plusTen.apply(10); // 20

plusTen.compose(multiplyTwo).apply(2); // multiplyTwo 먼저
plusTen.andThen(multiplyTwo).apply(2); // plusTen 먼저

BiFunction<T, U, R>

  • 두개의 값(T, U)를 받아서 R 타입을 리턴하는 함수 인터페이스
    - R apply(T t, R r)
BiFunction<String, String, Integer> biFunction = (a, b) -> a.length() - b.length();
System.out.println(biFunction.apply("snow", "now")); // print 1

Consumer<T>

  • T 타입을 받아서 아무값도 리턴하지 않는 함수 인터페이스
    - void Accept(T t)
  • 함수 조합용 메서드
    - andThen
Consumer<Integer> printT = (i) -> System.out.println(i);
printT.accept(10); // print 10

Supplier<T>

  • T 타입의 값을 제공하는 함수 인터페이스
Supplier<Integer> get10 = () -> 10;
System.out.println(get10.get()); // print 10

Predicate<T>

  • T 타입을 받아서 boolean을 리턴하는 함수 인터페이스
    - boolean test(T t)
  • 함수 조합용 메서드
    - And
    - Or
    - Negate
Predicate<String> startWithJ = (s) -> s.startsWith("s");
System.out.println(startWithJ.test("snow")); // true
profile
부족함을 인정하고 노력하자

0개의 댓글