[java] 리플렉션 개념

리플렉션은 자바 프로그램이 실행 중에 자신의 구조를 동적으로 파악하고, 수정할 수 있는 능력을 말합니다. 이는 클래스의 메서드, 필드, 생성자 등에 접근하여 정보를 얻거나 수정할 수 있게 해줍니다.

리플렉션의 활용

리플렉션은 다음과 같은 상황에서 유용하게 활용됩니다.

리플렉션의 주요 클래스

자바에서는 리플렉션을 지원하기 위해 java.lang.reflect 패키지에 여러 클래스와 인터페이스를 제공합니다. 주요 클래스로는 Class, Field, Method, Constructor 등이 있습니다.

예제 코드

다음은 Class를 이용하여 리플렉션을 통해 클래스의 정보를 얻는 예제 코드입니다.

import java.lang.reflect.Field;

public class ReflectionDemo {
    public static void main(String[] args) {
        Class<?> clazz = ReflectionDemo.class;
        
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            System.out.println("Field Name: " + field.getName());
            System.out.println("Field Type: " + field.getType());
        }
    }
}

위 코드는 ReflectionDemo 클래스의 필드 정보를 리플렉션을 통해 출력하는 간단한 예제입니다.

결론

리플렉션은 자바 프로그램이 실행 중에 클래스의 정보를 동적으로 파악하고 조작할 수 있도록 해주는 강력한 기능입니다. 그러나 과도한 사용은 성능 저하를 가져올 수 있으므로 주의해서 활용해야 합니다.

참고 문헌: Oracle Java Documentation - Reflection