[개발일지] 230706 Java BiFunction 인터페이스

새로운 메서드를 추가하는데 기존에 존재하는 코드와 중복되는 부분이 많아 코드를 재사용하기 위해 BiFunction이라는 것을 사용할 수 있다는 것을 알게 되었다.

 

그래서 오늘은 BiFunction에 대해 알아보려고 한다.

 

BiFunction


BiFunction은 Java 8에서 도입된 함수형 인터페이스 중 하나로, 두 개의 입력을 받아 결과를 반환하는 함수를 모델링합니다.

 

BiFunction 인터페이스

 

인터페이스에서 T와 U는 함수의 입력 타입이고, R은 반환 타입이다.

 

BiFunction을 사용하는 간단한 예제 코드를 살펴보자.

 

BiFunction<String, String, String> biFunction = (x, y) -> x + y;

String biFunctionResult = biFunction.apply("Hello", " World!");

System.out.println(biFunctionResult);

-> Hello World!

 

위 코드는 BiFunction을 이용해 문자열을 결합하는 코드이다.

 

BiFunction인터페이스에서 입력받을 두 개의 인자 타입(String)과 반환할 타입(Stirng)을 정의해 주고 파라미터로 받아오는 인자를 어떻게 할지 정의해 줬다. (x + y)

이후 apply()메서드를 이용해서 두 문자열을 파라미터로 넘겨 결괏값을 받아왔다.

 

다른 예시를 살펴보자.

 

아래와 같은 Person 객체가 있다고 가정하자

 

 

아래 코드는 Person 객체 두 개를 생성해 두 Person의 나이를 비교해 더 나이가 많은 사람의 이름을 반환하는 코드이다.

 

 

BiFunction의 장점


  1. 코드의 간결성: BiFunction을 사용하면 람다 표현식을 활용해 코드를 훨씬 더 간결하게 작성할 수 있다.
  2. 재사용성(중복 제거): 같은 로직을 여러 번 사용해야 할 경우, BiFunction을 정의하고 재사용할 수 있다. 
  3. 고차 함수 지원: BiFunction은 메서드의 인자로 전달되거나, 결과로 반환될 수 있는데, 이는 고차 함수를 구현하는 데 유용하며, 이를 통해 중복되는 코드를 줄여 재사용성을 높일 수 있다.
고차 함수 : 다른 함수를 인자로 받거나 결과로 함수를 반환하는 함수