자바 8부터 도입된 람다 표현식을 이용하면 메서드가 하나뿐인 인터페이스를 간편하게 구현할 수 있습니다. 이때 @FunctionalInterface
애노테이션을 사용하면 해당 인터페이스가 람다 표현식의 대상임을 명시할 수 있습니다.
@FunctionalInterface 애노테이션이란?
@FunctionalInterface
애노테이션은 컴파일러에게 해당 인터페이스가 함수형 인터페이스임을 명시하는 역할을 합니다. 함수형 인터페이스는 딱 하나의 추상 메서드를 가지고 있는 인터페이스를 의미하며, 인터페이스 선언시에 @FunctionalInterface
애노테이션을 사용하면 람다 표현식과 스트림 API 같은 자바 함수형 프로그래밍 기능을 활용할 수 있습니다.
@FunctionalInterface
interface Calculator {
int calculate(int x, int y);
}
위 코드에서 Calculator
인터페이스에 @FunctionalInterface
애노테이션이 적용되었습니다. 이제 람다 표현식을 사용하여 Calculator
인터페이스를 구현할 수 있습니다.
@FunctionalInterface 애노테이션의 장점
@FunctionalInterface
애노테이션을 사용하면 개발자가 인터페이스를 설계할 때 더 명확한 의도를 전달할 수 있습니다. 또한 컴파일러가 추상 메서드가 두 개 이상인 경우에는 컴파일 에러를 발생시켜 주기 때문에 실수를 줄일 수 있습니다.
결론
@FunctionalInterface
애노테이션을 사용하면 람다 표현식을 활용한 함수형 프로그래밍을 더욱 안전하고 명확하게 사용할 수 있습니다. 따라서 함수형 인터페이스를 설계할 때는 @FunctionalInterface
애노테이션을 적절히 활용하여 람다 표현식의 사용을 도와줄 수 있습니다.
참고 문헌: Oracle 자바 가이드