더북(TheBook)

@Documented는 자바 문서에 문서화 여부를 결정하고, @Retention은 애너테이션의 지속 시간을 설정합니다.

▼ 표 13-4 @Retention의 속성

속성

설명

Source

소스 코드까지만 유지합니다. 즉, 컴파일하면 해당 애너테이션 정보는 사라집니다.

Class

컴파일한 .class 파일에 유지합니다. 즉, 런타임을 할 때 클래스를 메모리로 읽어 오면 해당 정보는 사라집니다.

Runtime

런타임을 할 때도 .class 파일에 유지합니다. 사용자 정의 애너테이션을 만들 때 주로 사용합니다.

@Target은 필드, 메서드, 클래스 등 애너테이션을 작성하는 곳입니다.

▼ 표 13-5 @Target의 속성

속성

애너테이션 적용 시점

TYPE

class, interface, enum

FIELD

클래스의 멤버 변수

METHOD

메서드

PARAMETER

메서드 인자

CONSTRUCTOR

생성자

LOCAL_VARIABLE

로컬 변수

ANNOTATION_TYPE

애너테이션 타입에만 적용

PACKAGE

패키지

TYPE_PARAMETER

제네릭 타입 변수( MyClass<T>)

TYPE_USE

어떤 타입에도 적용( extends, implements, 객체 생성할 때 등)

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.