애너테이션 정의와 사용의 선택 기준을 나란히 비교한다
비교 항목: 애너테이션 요소는 제한된 값 타입을 사용한다 / @Retention이 남아 있는 시점을 정한다 / 대상과 유지 기간을 좁힌다
| 확인 질문 | 판단 근거 | 코드에서 드러낼 것 |
|---|---|---|
| 애너테이션 요소는 제한된 값 타입을 사용한다 | 기본 타입, String, Class, enum, 다른 annotation과 그 배열 등을 요소로 선언할 수 있습니다. | 타입과 시작값 |
| @Retention이 남아 있는 시점을 정한다 | SOURCE는 컴파일 뒤 사라지고 CLASS는 클래스 파일에 남으며 RUNTIME은 리플렉션으로 읽을 수 있습니다. | 실패 또는 변경 경계 |
| 대상과 유지 기간을 좁힌다 | @Target은 붙일 수 있는 선언을, @Retention은 소스·클래스·런타임 가운데 언제까지 남길지 정합니다. | 선택한 규칙의 결과 |
선택 기준 @Target은 붙일 수 있는 선언을, @Retention은 소스·클래스·런타임 가운데 언제까지 남길지 정합니다.