어노테이션 적용대상
- 어노테이션을 어디에 붙일 수 있는지 지정
- 열거상수는
java.lang.annotation.ElementType의 열거상수
@Target 어노테이션으로 지정
(예) @Target({ ElementType.TYPE, ElementType.FIELD })
ElementType 열거 상수와 적용대상
TYPE: 클래스, 인터페이스, 열거타입
ANNOTATION_TYPE: 어노테이션
FIELD: 필드
CONSTRUCTOR: 생성자
METHOD: 메서드
PARAMETER: 파라메터
LOCAL_VARIABLE: 로컬 변수
PACKAGE: 패키지
어노테이션 유지정책
- 어노테이션 범위를 어디까지 가져갈 것인가 지정
- 열거상수는
java.lang.annotation.RetentionPolicy의 열거상수
@Retention 어노테이션으로 지정
(예) @Retention(RetentionPolicy.RUNTIME)
RetentionPolicy 열거 상수
SOURCE: 소스에만 유지
CLASS: 바이트 코드까지 유지하지만, Reflection으로 어노테이션 정보를 얻을 수 없음.