[java] @FunctionalInterface 애노테이션

자바 8부터 도입된 람다 표현식을 이용하면 메서드가 하나뿐인 인터페이스를 간편하게 구현할 수 있습니다. 이때 @FunctionalInterface 애노테이션을 사용하면 해당 인터페이스가 람다 표현식의 대상임을 명시할 수 있습니다.

@FunctionalInterface 애노테이션이란?

@FunctionalInterface 애노테이션은 컴파일러에게 해당 인터페이스가 함수형 인터페이스임을 명시하는 역할을 합니다. 함수형 인터페이스는 딱 하나의 추상 메서드를 가지고 있는 인터페이스를 의미하며, 인터페이스 선언시에 @FunctionalInterface 애노테이션을 사용하면 람다 표현식과 스트림 API 같은 자바 함수형 프로그래밍 기능을 활용할 수 있습니다.

@FunctionalInterface
interface Calculator {
    int calculate(int x, int y);
}

위 코드에서 Calculator 인터페이스에 @FunctionalInterface 애노테이션이 적용되었습니다. 이제 람다 표현식을 사용하여 Calculator 인터페이스를 구현할 수 있습니다.

@FunctionalInterface 애노테이션의 장점

@FunctionalInterface 애노테이션을 사용하면 개발자가 인터페이스를 설계할 때 더 명확한 의도를 전달할 수 있습니다. 또한 컴파일러가 추상 메서드가 두 개 이상인 경우에는 컴파일 에러를 발생시켜 주기 때문에 실수를 줄일 수 있습니다.

결론

@FunctionalInterface 애노테이션을 사용하면 람다 표현식을 활용한 함수형 프로그래밍을 더욱 안전하고 명확하게 사용할 수 있습니다. 따라서 함수형 인터페이스를 설계할 때는 @FunctionalInterface 애노테이션을 적절히 활용하여 람다 표현식의 사용을 도와줄 수 있습니다.

참고 문헌: Oracle 자바 가이드