[java] 동적으로 객체 생성하기

Java에서 동적으로 객체를 생성하려면 특정 클래스의 이름을 동적으로 전달할 수 있어야 합니다. 이를 위해 Class 객체를 사용하여 동적으로 클래스를 로드하고 인스턴스를 생성할 수 있습니다.

클래스 동적으로 로드하기

우선, 동적으로 객체를 생성할 클래스를 로드해야 합니다. 이를 위해 클래스의 전체 이름을 문자열로 가지고 있어야하며, 이 문자열을 사용하여 Class.forName() 메서드를 호출하여 클래스를 로드합니다.

String className = "com.example.MyClass";
Class<?> myClass = Class.forName(className);

객체 생성하기

로드한 클래스를 기반으로 객체를 동적으로 생성할 수 있습니다. Class 객체의 newInstance() 메서드를 사용하여 새로운 인스턴스를 생성할 수 있습니다.

Object instance = myClass.newInstance();

다만, newInstance() 메서드는 Java 9부터 deprecated 되었으며, 대신 Constructor를 사용하여 객체를 생성하는 것이 권장됩니다.

Constructor<?> constructor = myClass.getConstructor();
Object instance = constructor.newInstance();

완전한 예제

다음은 MyClass를 동적으로 생성하는 완전한 예제 코드입니다.

public class Main {
    public static void main(String[] args) throws Exception {
        String className = "com.example.MyClass";
        Class<?> myClass = Class.forName(className);
        Constructor<?> constructor = myClass.getConstructor();
        Object instance = constructor.newInstance();
    }
}

위의 예제는 com.example.MyClass 클래스를 동적으로 로드하고 인스턴스를 생성합니다. 위의 예제는 ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, InvocationTargetException 등의 예외를 처리해야하는 경우도 있다는 것을 기억해야합니다.

Java에서 동적으로 객체를 생성하는 방법은 유연성을 제공하며, 특히 플러그인이나 확장 기능을 개발할 때 유용할 수 있습니다.

참고 자료