12주차 과제: 애노테이션 #12


목표

자바의 애노테이션에 대해 학습하세요.

학습할 것 (필수)

애노테이션 정의하는 방법


Java 애노테이션은 소스 코드에 메타 데이터 정보를 추가하기위한 메커니즘입니다. 패키지, 클래스, 인터페이스, 메서드 및 필드에 연결할 수 있지만 애노테이션 자체는 프로그램 실행에 영향을주지 않습니다. 이것은 프레임 워크가 런타임에 애노테이션의 존재를 기반으로 동작을 변경할 수 없다는 것을 의미하지는 않지만, 애노테이션을 포함한다고해서 프로그램의 런타임 동작이 변경되는 것은 아닙니다. 

애노테이션을 만드려면 대상에 대한 정보가 필요합니다. 애노테이션의 대상 은 애노테이션을 적용 할 수있는 Java 구성을 지정합니다. 예를 들어, 일부 애노테이션은 메소드에만 유효하고 다른 애노테이션은 클래스와 필드 모두에 유효 할 수 있습니다.  필드 및 생성자 대상이 애노테이션과 연관되어있는 경우 애노테이션은 필드 또는 생성자에서 사용될 수 있습니다. 반면에 애노테이션에 메소드의 연관된 대상 만있는 경우 메소드가 아닌 구조에 애노테이션을 적용하면 컴파일 중에 오류가 발생합니다.

애노테이션에는 연관된 매개 변수가있을 수도 있습니다. 이러한 매개 변수는 기본 (예 : int또는 double), String클래스, 열거 형, 애노테이션 또는 앞선 다섯 가지 유형 중 하나의 배열 일 수 있습니다

이러한 필드 애노테이션을 생성하기 위해 @interface 키워드를 사용하여 새 애노테이션을 선언 합니다.


선언의 핵심은 public @interface JsonField입니다. public수정자를 통해 애노테이션을 모든 패키지에서 사용할 수 있습니다. 애노테이션의 본문은 유형이 빈 문자열이고 기본값 String인이라는 단일 매개 변수를 선언 합니다.단일 요소 애노테이션을 정의하고 애노테이션 사용자가 매개 변수 이름을 지정하지 않고 애노테이션에 단일 매개 변수를 제공 할 수 있도록합니다. 기본값 인 빈 문자열을 포함하면 값을 생략 할 수 있으므로 값이 명시 적으로 지정되지 않은 경우 빈 문자열이 유지됩니다. 애노테이션 선언의 보존 정책과 대상은 각각 @Retention및 @Target을 사용하여 지정 됩니다. 

@retention

리플렉션을 통한 검사를 위해 런타임에 사용할 수 있어야하는 경우 사용자 지정 애노테이션을 지정할 수 있습니다. 애노테이션 정의부에 @Retention을 달면됩니다. 그 방법은 위의 이미지와 같습니다. 

@Retention (RetentionPolicy.RUNTIME)

이것은 런타임에 리플렉션을 통해 애노테이션을 사용할 수 있어야 함을 Java 컴파일러 및 JVM에 알리는 신호입니다.

@target

사용자 정의 어노테이션을 사용하여 애노테이션을 작성할 수있는 Java 요소를 지정할 수 있습니다. @Retention과 마찬가지로 애노테이션 정의부에 @Target을 달면됩니다. 다음은 @Target 자바 애노테이션의 예입니다.


이 ElementType클래스에는 아래의 대상들이 포함됩니다.

  • ElementType.ANNOTATION_TYPE
  • ElementType.CONSTRUCTOR
  • ElementType.FIELD
  • ElementType.LOCAL_VARIABLE
  • ElementType.METHOD
  • ElementType.PACKAGE
  • ElementType.PARAMETER
  • ElementType.TYPE
@Target은 이러한 값 중 하나 이상을 지정할 수 있습니다 . 여러 값을 지정하려면 중괄호로 구분 된 목록 내에서 지정해야합니다. 

@documented

문서화 될 것임을 툴에 알려주는 마커 인터페이스입니다. 코드에서 @Documented 애노테이션을 사용하면 Javadoc과 같은 도구가이를 처리하고 생성 된 문서에 애노테이션 유형 정보를 포함 할 수 있습니다.



유형 선언이 Documented로 애노테이션이 달린 경우 해당 애노테이션은 애노테이션이 달린 요소의 공용 API의 일부가됩니다.

애노테이션 프로세서 

애노테이션 프로세서는 자바 컴파일러 일종의 플러그인입니다. 애노테이션으로만 구동되는 소스코드를 검사, 수정 또는 생성하는데 사용됩니다. 애노테이션 프로세서는 javax.annotation.processing.Processor인터페이스 를 구현해야합니다. 사용 사례에 따라 아래 상황에서 사용됩니다. 

  • 소스 또는 리소스 파일 세트 생성
  • 기존 소스 코드 변경 (수정)
  • 기존 소스 코드 분석 및 진단 메시지 생성


댓글

이 블로그의 인기 게시물

git-receive-pack not permitted on 깃 허브 로그인 관련 문제