@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, 객체 생성할 때 등)

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