본문 바로가기

Java

[JAVA]리플렉션(reflection)과 어노테이션 정보의 사용

어노테이션 자체는 아무런 동작을 가지지 않는 단지 명찰과 같은 존재이지만 리플렉션을 이용해서 어노테이션의 적용 여부, 엘리먼트 값을 읽는 것 등이 가능하다. 클래스에 적용된 어노테이션 정보를 얻을 때는 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까지)

'Java' 카테고리의 다른 글

[JAVA]클래스 상속  (0) 2021.05.07
[JAVA]상속(Inheritance)의 개념  (0) 2021.05.07
[JAVA]어노테이션(Annotation)  (0) 2021.05.07
[JAVA]Getter와 Setter 메소드  (0) 2021.05.06
[JAVA]접근 제한자(Access Modifier)  (0) 2021.05.06