티스토리 뷰

안드로이드

Custom Annotation(@interface)

이블로 2019. 1. 6. 18:07

@Target


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/** Class, interface (including annotation type), or enum declaration */
TYPE,
 
/** Field declaration (includes enum constants) */
FIELD,
 
/** Method declaration */
METHOD,
 
/** Formal parameter declaration */
PARAMETER,
 
/** Constructor declaration */
CONSTRUCTOR,
 
/** Local variable declaration */
LOCAL_VARIABLE,
 
/** Annotation type declaration */
ANNOTATION_TYPE,
 
/** Package declaration */
PACKAGE,
 
/**
 * Type parameter declaration
 *
 * @since 1.8
 */
TYPE_PARAMETER,
 
/**
 * Use of a type
 *
 * @since 1.8
 */
TYPE_USE
cs

이는 package java.lang.annotation 에 있는 ElementType입니다.

@Renotation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
 * Annotations are to be discarded by the compiler.
 */
SOURCE,
 
/**
 * Annotations are to be recorded in the class file by the compiler
 * but need not be retained by the VM at run time.  This is the default
 * behavior.
 */
CLASS,
 
/**
 * Annotations are to be recorded in the class file by the compiler and
 * retained by the VM at run time, so they may be read reflectively.
 *
 * @see java.lang.reflect.AnnotatedElement
 */
RUNTIME
cs

1.SOURCE는 컴파일러에게서 버려진다. 즉 클래스에는 포함이 안된다


2.Class는 default로서 Compiler에게 class file이 기록되지만 런타임시 가상머신에 의해 retain되지 않는다.


3.Runtime은Compiler에게 class file이 기록되고 At runtime에 VM에 의해 retain 된다.

3번을 이해하기 위해서는 reflect를 참조



@interface (커스텀어노테이션)




출처:https://medium.com/@ggikko/java-%EC%BB%A4%EC%8A%A4%ED%85%80-annotation-436253f395ad

'안드로이드' 카테고리의 다른 글

개인정보취급방침 네이버쇼핑랭킹검색  (0) 2020.05.28
intent처리  (0) 2019.01.06
소셜로그인 정리  (0) 2019.01.06
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함