더북(TheBook)

3.6.3 독자적인 함수형 인터페이스 구현


앞으로 종종 표준 함수형 인터페이스가 적합하지 않은 상황에 놓일 것이다. 이때는 인터페이스를 직접 구현해야 한다.

이미지를 색채 패턴으로 채운다고 하자. 사용자는 각 픽셀에서 쓸 색을 만들어 주는 함수를 전달해야 한다. 그런데 (int, int) -> Color 매핑에 해당하는 표준 타입은 없다. BiFunction<Integer, Integer, Color>를 사용해도 되지만, 그러면 오토박싱이 일어난다.

이런 상황에서는 새 인터페이스를 정의하는 것이 더 좋다.

@FunctionalInterface

public interface PixelFunction {

    Color apply(int x, int y);

}


Note ≣

함수형 인터페이스에는 @FunctionalInterface 애너테이션을 붙이면 좋다. @FunctionalInterface 애너테이션을 붙여서 좋은 점은 두 가지다. 첫째, 애너테이션이 붙은 엔터티(entity)가 추상 메서드를 한 개만 가진 인터페이스인지 컴파일러가 검사해 준다. 둘째, 해당 인터페이스가 함수형 인터페이스라는 문장이 자바독 페이지에 추가된다.

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