람다 표현식의 바디는 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)));