더북(TheBook)

3.8.1 함수를 반환하는 메서드


어떨 때는 문자열의 배열을 오름차순으로 정렬하고, 또 어떨 때는 내림차순으로 정렬한다고 하자. 다음 상황에 알맞은 비교자를 만들어 내는 메서드를 작성할 수 있다.

public static Comparator<String> compareInDirection(int direction) {

    return (x, y) -> direction * x.compareTo(y);

}


compareInDirection(1) 호출은 오름차순 비교자를 돌려주고, compareInDirection(-1) 호출은 내림차순 비교자를 돌려준다.

호출 결과로 나온 비교자를 Comparator 인터페이스를 인수로 받는 메서드(예를 들어 Arrays.sort)에 전달할 수 있다.

Arrays.sort(friends, compareInDirection(-1));


함수(기술적으로는 함수형 인터페이스를 구현한 클래스의 인스턴스)를 만들어 내는 메서드를 작성하는 것을 주저하지 말자. 이런 메서드는 함수형 인터페이스를 받는 메서드에 전달할 사용자 정의 함수를 만들 때 유용하다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.