[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());
}

위의 예시는 제네릭 타입을 활용하여 동적으로 클래스를 로딩하고 객체를 생성하는 방법을 보여줍니다. 이를 통해 안전한 타입 변환을 보장하면서 동적으로 객체를 생성할 수 있습니다.

이를테면,

와 같은 책들에서 추가 정보를 얻을 수 있습니다.

끝.