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