[java] 리플렉션과 동적 로딩
자바 프로그래밍에서 리플렉션(Reflection)과 동적 로딩(Dynamic Loading)은 프로그램 실행 중에 클래스 및 메서드를 동적으로 로드하고 조사하는 데 사용됩니다.
1. 리플렉션(Reflection)
리플렉션은 실행 중인 객체의 클래스 정보를 알아내거나, 객체에 없는 메서드를 호출하는 데 사용됩니다. 이를 통해 속성, 메서드 및 생성자에 접근하여 조작할 수 있습니다. java.lang.reflect
패키지에 있는 클래스들을 사용하여 리플렉션을 구현할 수 있습니다.
리플렉션을 사용하여 클래스의 이름을 통해 클래스를 동적으로 로드하고 인스턴스를 생성할 수 있습니다.
import java.lang.reflect.*;
public class ReflectionExample {
public static void main(String[] args) {
try {
// 클래스 이름으로 클래스 로드
Class<?> myClass = Class.forName("com.example.MyClass");
// 인스턴스 생성
Object obj = myClass.newInstance();
// 메서드 호출
Method method = myClass.getMethod("myMethod");
method.invoke(obj);
} catch (Exception e) {
e.printStackTrace();
}
}
}
2. 동적 로딩(Dynamic Loading)
동적 로딩은 프로그램 실행 중에 필요한 클래스를 로드하는 것을 말합니다. Class.forName()
메서드를 사용하여 동적으로 클래스를 로드할 수 있습니다.
public class DynamicLoadingExample {
public static void main(String[] args) {
try {
// 클래스 이름으로 클래스 로드
Class<?> myClass = Class.forName("com.example.MyClass");
// 인스턴스 생성
Object obj = myClass.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
}
}
결론
리플렉션과 동적 로딩은 자바 프로그래밍에서 런타임에 클래스와 메서드를 다루는 데 유용한 도구입니다. 그러나 너무 남용하면 성능에 영향을 미칠 수 있으므로 신중하게 활용해야 합니다.
자바 공식 문서 - 리플렉션 자바 공식 문서 - 동적 로딩
이 글은 자바에서 리플렉션과 동적 로딩에 대해 알아보았습니다. 감사합니다.