본문

171211(월) - @Target

@Tartget


- annotation type이 적용가능한 context를 나타낸다.

- annotation이 적용가능한 declaration contexts 와 type contexts은 JLS 9.6.4.1에 명시

- code상에서 java.lang.annotation.ElementType. enum constants로 구성된다.

- if @Target meta-annotation이 annotation type T에 없다면, Type t의 annotation은 parameter declaration을 제외한 임의의 선언을 위한 modifier로 기술 될 수 있다.


- 예) Target meta-annotation은 선언된 type 자체가 meta-annotation임을 나타냄

annotation type선언에만 사용 가능

    @Target(ElementType.ANNOTATION_TYPE)
   
public @interface MetaAnnotationType {
       
...
   
}
 

- complex annotation type에서 member annotation type으로 사용되도록 지정

- 직접 annotation을 다는데는 사용 불가능

    @Target({})
   
public @interface MemberType {
       
...
   
}
 


ElementType

- annotation이 Java program에 나타날 수 있는 syntactic location의 simple classification을 제공

- annotation이 나타날 수 있는 syntactic locations

1. annotation declaration에 적용되는 declaration context

2. annotation declaration, expressions에 적용되는 type context


Enum values

ElementType ANNOTATION_TYPE

Annotation type declaration  

ElementType CONSTRUCTOR

Constructor declaration  

ElementType FIELD

Field declaration (includes enum constants)  

ElementType LOCAL_VARIABLE

Local variable declaration  

ElementType METHOD

Method declaration  

ElementType PACKAGE

Package declaration  

ElementType PARAMETER

Formal parameter declaration  

ElementType TYPE

Class, interface (including annotation type), or enum declaration  

ElementType TYPE_PARAMETER

Type parameter declaration 

ElementType TYPE_USE

Use of a type 


'Mobile > RxJava2' 카테고리의 다른 글

171213(수) - RxJava2 (create)  (0) 2017.12.13
171211(월) - @Volatile  (0) 2017.12.11
171208(금) - @Qualifiers  (0) 2017.12.08
171206(수) - @Scope, @Retention  (0) 2017.12.06
170904(월) - RxJava2 (Infinite scroll with RxJava2, Kotlin)  (0) 2017.09.04

공유

댓글