Post

어노테이션 (메타데이터)

어노테이션 (메타데이터)

클래스나 메소드 등의 선언 시에 @를 사용하는 것을 말한다. 실제 코드에 직접적인 영향을 주지 않고, 해당 코드를 처리하는 Compiler , Interpreter 혹은 Runtime에서 JVM에게 처리를 위한 정보를 제공할 수 있다.

@Override

  • 해당 메소드가 부모 클래스에 있는 메소드를 상속받았다는 것을 명시적으로 선언한다.

@Deprecated

  • 미리 만들어진 클래스나 메소드가 더 이상 사용되지 않는 경우 선언한다.

@SupressWarnings

  • 컴파일러의 경고를 무시하고싶을 경우 선언한다.

메타 어노테이션

@Target

  • 어노테이션을 어떤 것이 적용할지 선언한다.
  • @Target() 괄호 안에 적용 대상을 지정할 수 있다.
    1
    
    @Target(ElementType.METHOD)
    

@Retention

  • 얼마나 오래 어노테이션 정보가 유지되는지를 선언한다.
  • @Retention() 괄호 안에 적용 대상을 지정할 수 있다.
    • SOURCE : 어노테이션 정보가 컴파일 시 사라짐
    • CLASS : 클래스 파일에 있는 어노테이션 정보가 컴파일러에 의해서 참조 가능하나 VM에서는 사라짐
    • RUNTIME : 실행시 어노테이션 정보가 VM에 의해서 참조 가능
      1
      
      @Retention(RetentionPolicy.RUNTIME)
      

@Documented

  • 해당 어노테이션 정보가 javadocs(API) 문서에 포함된다는 것을 선언한다.

@Inherited

  • 모든 자식 클래스에서 부모 클래스의 어노테이션이 사용 가능하다는 것을 선언한다.

커스텀 어노테이션을 만들어보자

어떤식으로 어노테이션을 선언하는지 예제를 통해 살펴보자

1
2
3
4
5
6
@Target(ElementType.METHOD)             // 해당 어노테이션의 사용 대상 지정
@Retention(RetentionPolicy.RUNTIME)     // 어노테이션 유지 정보 지정
public @interface CustomAnnotation {    // @interface를 통해 만든 어노테이션을 사용 가능하도록함.
    public int number();                // 이 어노테이션 사용시 해당 항목에 대한 타입으로 값을 지정할 수 있음.
    public String text() default "This is CustomAnnotation";
}
This post is licensed under CC BY 4.0 by the author.