[java] 애노테이션의 리플렉션 사용하기

애노테이션(Annotation)은 자바 프로그래밍 언어에서 코드에 메타데이터를 추가하는 방법입니다. 리플렉션(Reflection)은 런타임 시점에 클래스의 메타데이터를 분석하고 조작하는 기술입니다. 이번 글에서는 애노테이션을 사용하여 리플렉션을 어떻게 활용할 수 있는지 알아보겠습니다.

애노테이션과 리플렉션 개요

애노테이션은 주석과 비슷한 형식으로 작성되며, 클래스, 메서드, 변수 등에 부가 정보를 붙일 수 있습니다. 리플렉션은 클래스의 구조를 런타임에 분석하고 수정할 수 있는 기능을 제공합니다.

애노테이션 정의하기

애노테이션을 정의할 때에는 @interface 키워드를 사용합니다. 아래는 @MyAnnotation이라는 애노테이션을 정의한 예시입니다.

public @interface MyAnnotation {
    String value();
}

애노테이션 적용하기

애노테이션은 @ 기호를 사용하여 적용할 수 있습니다. 아래는 애노테이션을 메서드에 적용한 예시입니다.

public class MyService {
    @MyAnnotation("SomeValue")
    public void myMethod() {
        // 메서드 내용
    }
}

리플렉션을 사용한 애노테이션 정보 얻기

리플렉션을 사용하여 애노테이션 정보를 얻기 위해서는 java.lang.reflect 패키지를 활용합니다. 아래는 메서드에 적용된 애노테이션 정보를 얻는 예시입니다.

public class MyReflectionExample {
    public static void main(String[] args) {
        Method method = MyService.class.getMethod("myMethod");
        MyAnnotation annotation = method.getAnnotation(MyAnnotation.class);
        String value = annotation.value();
        System.out.println(value);  // 출력: "SomeValue"
    }
}

결론

애노테이션을 리플렉션과 함께 사용하면 런타임에 동적으로 메타데이터를 활용할 수 있습니다. 이를 통해 보다 유연하고 강력한 프로그래밍이 가능해집니다.

참고 문헌