GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — effective-java/chapter06/item39 at master · java-squid/effective-java

Expand file tree

/

item39

/
Copy path

Directory actions

More options

More options

Directory actions

More options

More options

Latest commit

 

History

History
History
/

item39

/
Copy path

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
README.md
README.md
 
 

README.md

Outline

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

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

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

요약

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

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

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

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

    • 예시 : @Test

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

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

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

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

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

References

  • Effective Java 3/E - Joshua Bloch
  • JavaSquid Issue-39
  • Javabom

질문

  • JavaSquid Issue-39

    111

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.