[java] 애노테이션의 상속과 재정의

애노테이션은 자바에서 메타데이터를 기술하기 위한 기능으로 소스 코드에 부가적인 정보를 제공합니다. 이번 블로그 글에서는 애노테이션의 상속과 재정의에 대해 알아보겠습니다.

1. 애노테이션의 속성 상속

애노테이션은 기본적으로 @Inherited 메타 애노테이션을 사용하여 상속을 지원합니다. 만일 어떤 애노테이션이 @Inherited를 적용받았다면, 해당 애노테이션을 사용한 클래스의 자식 클래스도 그 애노테이션을 사용하게 됩니다.

@Inherited
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface CustomAnnotation {
    String value();
}

위의 예시에서 @CustomAnnotation을 사용한 클래스가 상속될 때 해당 애노테이션을 상속받게 됩니다.

2. 애노테이션의 메소드 재정의

애노테이션은 메소드를 가질 수 없다고 생각할 수 있지만, 실제로는 애노테이션을 사용할 때 메소드를 재정의할 수 있는데, 이것을 통해 애노테이션의 사용 방식을 유연하게 변경할 수 있습니다.

public @interface CustomAnnotation {
    String value();
    String message() default "Default message";
}

위의 예시에서 @CustomAnnotationvalue 외에도 message 메소드를 가지고 있고, message는 기본값을 가지고 있습니다. 따라서 애노테이션을 사용할 때 message를 재정의하여 필요에 맞게 변경할 수 있습니다.

애노테이션의 상속과 재정의는 코드를 작성할 때 다양한 유연성을 제공하며, 다양한 상황에서 메타데이터를 적용하는데 도움이 됩니다.

이상으로 애노테이션의 상속과 재정의에 대해 알아보았습니다.

참고문헌: