[java] 리플렉션 개념
리플렉션은 자바 프로그램이 실행 중에 자신의 구조를 동적으로 파악하고, 수정할 수 있는 능력을 말합니다. 이는 클래스의 메서드, 필드, 생성자 등에 접근하여 정보를 얻거나 수정할 수 있게 해줍니다.
리플렉션의 활용
리플렉션은 다음과 같은 상황에서 유용하게 활용됩니다.
- 런타임에 클래스 정보를 동적으로 파악하여 객체 인스턴스를 생성할 때 사용됩니다.
- 외부 컴포넌트나 라이브러리의 클래스를 동적으로 로드하고 사용할 때 활용됩니다.
- 애노테이션(Annotation), 자바 빈즈(Java Beans) 등의 기술에서 리플렉션이 사용됩니다.
리플렉션의 주요 클래스
자바에서는 리플렉션을 지원하기 위해 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