본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] Reflection Tutorial - Annotations.

by 돼지왕왕돼지 2013. 12. 23.

 [Java] Reflection Tutorial - Annotations.



[Java] Reflection Tutorial - Annotations.


What are Java Annotations


Java5 에 소개된 기능으로, meta data 를 코드형태로 담을 수 있고, runtime 에 이 meta data 에 접근할 수 있다. pre-compiler 가 코드를 conversion 할 때 사용되기도 한다.


Annotation 은 interface 형태이다.


@Retention( RetentionPolicy.RUNTIME );

@Target( ElementType.TYPE )

public @interface TestAnnotation{

public String name();

public String value();

}


@TestAnnotation(name="variable", value="value")

public class TestClass{

// ...

}


@Retention( RetentionPolicy.RUNTIME ) 은 runtime 에 reflection 형태로 사용될 수 있다는 것을 의미한다.

이 구문이 없으면 runtime 에 이 annotation 은 사라진다. ( 구체적으로 compile time 에 제거한다. )


@Target( ElementType.TYPE ) 은 class, interface 와 같은 type 에 쓰인다는 것이다. TYPE 대신 METHOD, FIELD 를 줄수도 있다. 만약 이를 명시해주지 않으면 모든 곳에 사용될 수 있다.




Class Annotations


Annotations[] annotations = aClass.getAnnotations();


if ( annotaion instanceof TestAnnotation ){

((TestAnnotation )annotaion).name();

((TestAnnotation )annotaion).value();

}




Method Annotations


method.getDeclaredAnnotations();







Parameter Annotations


method.getParameterAnnotations();




Field Annotations


field.getDeclaredAnnotations();

field.getAnnotation( TestAnnotation.class );



댓글0