[java] 어노테이션과 리플렉션

이 글에서는 자바 프로그래밍에서 어노테이션(Annotation)리플렉션(Reflection)에 대해 알아보겠습니다.

어노테이션(Annotation)

어노테이션은 소스 코드에 메타데이터를 추가하는 방법으로, 코드에 대한 추가 정보를 제공합니다. 이는 컴파일러, 개발 도구, 프레임워크 등에서 활용할 수 있습니다. 자바에서 어노테이션은 @ 기호를 사용하여 정의하며, 내장된 어노테이션 외에도 커스텀 어노테이션을 생성할 수 있습니다.

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CustomAnnotation {
    String value();
}

위 코드에서 @Retention@Target은 어노테이션의 범위와 적용 대상을 지정하며, @interface를 통해 커스텀 어노테이션을 정의합니다.

리플렉션(Reflection)

리플렉션은 프로그램 실행 중에 클래스의 정보를 분석하고 수정할 수 있는 기능을 말합니다. 이를 통해 런타임 시 클래스의 메서드, 필드, 어노테이션 등을 다룰 수 있습니다. 리플렉션은 Java의 java.lang.reflect 패키지를 통해 사용할 수 있습니다.

public class ReflectionExample {
    public static void main(String[] args) {
        Class<?> clazz = Class.forName("com.example.MyClass");
        Method[] methods = clazz.getDeclaredMethods();
        for (Method method : methods) {
            System.out.println("Method name: " + method.getName());
        }
    }
}

위 예제에서는 Class.forName 메서드를 사용하여 클래스를 동적으로 로드하고, 리플렉션을 통해 해당 클래스의 메서드 정보를 출력하는 예시입니다.

결론

어노테이션과 리플렉션은 자바의 강력한 기능으로, 메타데이터와 런타임 정보 분석 등을 통해 다양한 프로그래밍 시나리오에 활용될 수 있습니다. 이를 통해 보다 유연하고 동적인 프로그래밍이 가능해집니다.

자세한 내용은 Oracle Java Documentation를 참고하시기 바랍니다.