Inherited — 상속 애너테이션
Inherited — 상속 애너테이션
@Inherited는 애너테이션 인터페이스가 자동으로 상속됨을 나타냅니다. Inherited 메타 애너테이션이 애너테이션 인터페이스 선언에 존재하면, 사용자가 클래스 선언에서 해당 애너테이션 인터페이스를 조회했을 때 그 클래스 선언에 이 인터페이스의 애너테이션이 없다면, 클래스의 수퍼클래스에서 자동으로 애너테이션 인터페이스를 조회합니다.
본문
이 조회 과정은 해당 인터페이스의 애너테이션을 찾거나 클래스 계층의 최상위(Object)에 도달할 때까지 반복됩니다. 어떤 수퍼클래스에도 이 인터페이스의 애너테이션이 없으면, 해당 클래스에는 그러한 애너테이션이 없다고 조회 결과가 나타납니다.
@Documented
@Retention(RUNTIME)
@Target(ANNOTATION_TYPE)
public @interface Inherited
주의할 점은 두 가지입니다.
- 이 메타 애너테이션은 애너테이션된 인터페이스가 클래스가 아닌 다른 것에 붙어 있을 때는 아무 효과가 없습니다.
- 이 메타 애너테이션은 수퍼클래스에서만 애너테이션이 상속되게 합니다. 구현한 인터페이스의 애너테이션은 효과가 없습니다.
즉, 상속과 관련된 클래스 계층에서 애너테이션 정보를 전파하고 싶을 때 사용하는 메타 애너테이션입니다.