어노테이션 자체는 아무런 동작을 가지지 않는 단지 명찰과 같은 존재이지만 리플렉션을 이용해서 어노테이션의 적용 여부, 엘리먼트 값을 읽는 것 등이 가능하다. 클래스에 적용된 어노테이션 정보를 얻을 때는 java.lang.Class
를 이용하면 된다. 하지만 필드, 생성자, 메소드에 적용된 어노테이션 정보를 얻으려면 java.lang.reflect
패키지의 Field, Constructor, Method 타입의 배열을 얻어야 한다.
리턴 타입 |
메소드명(매개변수) |
설명 |
Field[] |
getFields() |
필드 정보를 Field 배열로 리턴 |
Constructor[] |
getConstructors() |
생성자 정보를 Constructor 배열로 리턴 |
Method[] |
getDeclaredMethods() |
메소드 정보를 Method 배열로 리턴 |
Class, Field, Constructor, Method는 다음과 같은 메소드를 가지는데 이를 이용해서 적용된 어노테이션 정보를 볼 수 있다.
리턴 타입 |
메소드명(매개변수) |
|
boolean |
isAnnotationPresent(Class<? extends Annotation> annotationClass) |
지정한 어노테이션이 적용되었는지 여부에 대해 boolean 타입으로 리턴한다. |
Annotation |
getAnnotation(Class<T> annotationClass) |
지정한 어노테이션이 적용되어 있으면 어노테이션을 리턴하고 아니면 null을 리턴한다. |
Annotation[] |
getAnnotations() |
적용된 모든 어노케이션을 리턴한다.(public까지) 적용된 어노케이션이 없으면 길이가 0인 배열이 리턴된다. |
Annotation[] |
getDeclaredAnnotations() |
직접 적용된 모든 어노케이션을 리턴한다.(private까지) |