[java] 제네릭 타입의 동적 클래스 로딩과 객체 생성
자바에서는 제네릭 타입을 사용하여 동적으로 클래스를 로딩하고 객체를 생성할 수 있습니다. 이를 통해 프로그램 실행 시에 다양한 클래스를 동적으로 처리하고 객체를 생성할 수 있습니다.
동적 클래스 로딩
자바에서는 Class.forName()
메서드를 사용하여 동적으로 클래스를 로딩할 수 있습니다. 이 메서드를 사용하면 런타임 시에 클래스 이름을 지정하여 해당 클래스를 로딩할 수 있습니다.
try {
Class<?> dynamicClass = Class.forName("com.example.DynamicClass");
} catch (ClassNotFoundException e) {
// 클래스를 찾을 수 없을 때의 처리
}
객체 생성
로드된 클래스로부터 객체를 생성하기 위해서는 newInstance()
메서드나 생성자를 사용할 수 있습니다.
newInstance() 메서드 사용
try {
Class<?> dynamicClass = Class.forName("com.example.DynamicClass");
Object instance = dynamicClass.newInstance();
} catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) {
// 객체를 생성할 수 없을 때의 처리
}
생성자 사용
try {
Class<?> dynamicClass = Class.forName("com.example.DynamicClass");
Constructor<?> constructor = dynamicClass.getConstructor();
Object instance = constructor.newInstance();
} catch (InstantiationException | IllegalAccessException | NoSuchMethodException | InvocationTargetException | ClassNotFoundException e) {
// 객체를 생성할 수 없을 때의 처리
}
제네릭 타입의 동적 클래스 로딩과 객체 생성
제네릭 타입을 사용하면 로딩할 클래스의 타입을 미리 지정할 수 있습니다.
public <T> T createInstance(String className, Class<T> type) throws InstantiationException, IllegalAccessException, ClassNotFoundException {
Class<?> dynamicClass = Class.forName(className);
return type.cast(dynamicClass.newInstance());
}
위의 예시는 제네릭 타입을 활용하여 동적으로 클래스를 로딩하고 객체를 생성하는 방법을 보여줍니다. 이를 통해 안전한 타입 변환을 보장하면서 동적으로 객체를 생성할 수 있습니다.
이를테면,
- 자바 세뇌 프로그래밍: 제네릭스를 사용하자
- 자바 동적 프로그래밍에서의 제네릭 타입 활용법
와 같은 책들에서 추가 정보를 얻을 수 있습니다.
끝.