Target
Target
이 문서에서는 Target 설정 옵션의 종류와 특징에 대해 다룬다.
@interface Target
Library에서 Target 코드를 찾아보면 다음과 같다. 편의상 주석은 제거하였다.
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
ElementType[] value();
}@Documented- 작성된 Annotation이 Javadoc에 문서화 됨을 표시@Retention- 현재 Annotation이 RUNTIME 시점까지 유지되어야 함을 표시
enum ElementType
Target Annotation 내부에는 ElementType이 배열 형태로 설정될 수 있다. ElementType은 열거형(enum)으로 다음과 같이 구현되어 있다.
public enum ElementType {
/** Class, interface (including annotation type), or enum declaration */
TYPE,
/** Field declaration (includes enum constants) */
FIELD,
/** Method declaration */
METHOD,
/** Formal parameter declaration */
PARAMETER,
/** Constructor declaration */
CONSTRUCTOR,
/** Local variable declaration */
LOCAL_VARIABLE,
/** Annotation type declaration */
ANNOTATION_TYPE,
/** Package declaration */
PACKAGE,
/**
* Type parameter declaration
*
* @since 1.8
*/
TYPE_PARAMETER,
/**
* Use of a type
*
* @since 1.8
*/
TYPE_USE
}설정 가능한 ElementType 값은 다음과 같다.
기본
TYPE - 클래스, 인터페이스, Annotation, Enum을 대상으로 지정
FIELD - 열거형 상수를 포함한 필드를 대상으로 지정
METHOD - 메소드를 대상으로 지정
PARAMETER - 매개변수를 대상으로 지정
CONSTRUCTOR - 생성자를 대상으로 지정
LOCAL_VARIABLE - 지역변수를 대상으로 지정
ANNOTATION_TYPE - Annotation을 대상으로 지정
PACKAGE - Package를 대상으로 지정(package-info.java에서 사용 가능)
추가(JDK 1.8+)
TYPE_PARAMETER - 타입 파라미터(in 제네릭)를 대상으로 지정
TYPE_USE - 타입 파라미터를 포함한 모든 타입을 대상으로 지정
ElementType.TYPE
ElementType.FIELD
ElementType.METHOD
ElementType.PARAMETER
ElementType.CONSTRUCTOR
ElementType.LOCAL_VARIABLE
ElementType.ANNOTATION_TYPE
ElementType.PACKAGE
ElementType.TYPE_PARAMETER
ElementType.TYPE_USE
예제 - Annotation 작성 가능 위치 확인
Last updated