더북(TheBook)

람다 표현식의 바디는 action.run()이 호출될 때 실행된다는 점을 염두에 둔다.

이제 이 예제를 좀 더 복잡하게 만들어 보자. 이번에는 몇 번째 반복을 수행하는지 액션에 알리고 싶다. 이렇게 하려면 int 매개변수를 받고 반환 타입을 void로 둔 함수형 인터페이스를 골라야 한다. 직접 만들기보다는 다음 절에서 설명할 표준 함수형 인터페이스 중 하나를 사용하는 것이 더 좋다. int 값 처리용 표준 인터페이스는 다음과 같다.

public interface IntConsumer {

    void accept(int value);

}


다음은 repeat 메서드를 개선한 버전이다.

public static void repeat(int n, IntConsumer action) {

    for (int i = 0; i < n; i++) action.accept(i);

}


그리고 다음은 개선된 repeat 메서드를 호출하는 방법이다.

repeat(10, i -> System.out.println("Countdown: " + (9 - i)));

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