자바의 함수형 인터페이스

      자바의 함수형 인터페이스에 댓글 없음

자바에서 일급 객체라는 것은 다음과 같은 조건을 만족해야 한다.

  • 변수에 담을 수 있어야 한다.
  • 인자로 전달할 수 있어야 한다.
  • 리턴값으로 전달할 수 있어야 한다.

자바의 메소드는 이러한 조건들을 만족하지 못하기에 일급 객체가 아니다. 따라서 함수가 일급 객체인 자바스크립트 등과 달리 함수형 프로그래밍 언어라고 할 수 없다.

이런 자바에 함수형 프로그래밍의 요소를 도입하기 위해 자바 8에서 람다식이 도입되었다.

(Double a, Double b) -> a+b;

// 이것은 아래와 같다.

Double plus(Double a, Double b) {
    return a+b;
}

함수형 인터페이스는 추상 메서드가 하나만 정의되어 있다고 약속된 인터페이스이며, 람다식을 일급 시민으로서 변수로 저장하는 방법이다.

BiConsumer

BiConsumer<Integer, Integer> printTwoNumbers = (a, b) ->
System.out.println("첫번째 수: " + a + ", 두번째 수: " + b);

리턴값이 없는 람다식에 사용한다. 사용할 땐 printTwoNumbers.accept(4, 5) // 첫번째 수: 4, 두번째 수: 5

BiFunction

BiFunction<Double, Double, Double> plus = (a, b) -> a + b;

첫번째와 두번째 Double은 인자의 자료형이며, 마지막 Double은 리턴값의 자료형이다.

사용할 땐 plus.apply(4, 5) // 9 형식으로 사용한다.

BiPredicate

BiPredicate<Integer, Integer> isBiggerThan = (a, b) -> a > b;

람다식이 참인지 거짓인지를 판별해 boolean으로 반환한다.

사용할 땐 isBiggerThan.test(4, 5) // false 형식으로 사용한다.

댓글 남기기