Effective Java #39 - Annotation

업데이트:


열거 타입과 애너테이션 (6장)

#39 : 명명 패턴보다 애너테이션을 사용하라

애너테이션으로 할 수 있는 일을 명명 패턴으로 처리할 이유는 없다. 일반 프로그래머가 애너테이션 타입을 직접 정의할 일은 거의 없지만, 자바가 제공하는 애너테이션 타입들을 적절히 활용해야 한다.

요약

  • 변수, 메서드의 이름을 일관된 방식으로 작성하는 패턴을 명명 패턴이라고 한다.

  • 명명 패턴을 사용하면 아래의 단점들이 있으므로 애너테이션 사용을 권장한다.

    • 오타 발생 시 문제가 발생한다.
    • 프로그램 요소를 매개변수로 전달할 마땅한 방법이 없다. (특정 예외를 던져야 성공하는 테스트 등)
  • 마커 애너테이션

    • 아무 매개변수 없이 단순히 대상에 마킹(marking)한다.

    • 예시 : @Test

      @Retention(RetentionPolicy.RUNTIME)
      @Target(ElementType.METHOD)
      public @interface Test{}
      
    • @Retention : 보존정책, 해당 애너테이션이 런타임에도 유지되어야 한다는 표시이다.

    • @Target : 적용대상, 해당 애너테이션의 적용대상을 제한한다.(여기서는 메서드에서만 사용하도록 제한)

  • 위처럼 애너테이션 선언에 다는 애너테이션을 메타애너테이션(meta-annotation)이라고 한다.

  • 애너테이션은 자바의 리플렉션을 사용하여 구현한다.

  • @Repeatable : 반복, 여러 개의 값을 받을 때 배열 대신 사용한다.

References

댓글남기기