어노테이션 (메타데이터)
어노테이션 (메타데이터)
클래스나 메소드 등의 선언 시에 @를 사용하는 것을 말한다. 실제 코드에 직접적인 영향을 주지 않고, 해당 코드를 처리하는 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.