>Java >java지도 시간 >문자열 이름만 사용하여 Java 클래스를 인스턴스화하려면 어떻게 해야 합니까?

문자열 이름만 사용하여 Java 클래스를 인스턴스화하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-11 19:08:20179검색

How Can I Instantiate Java Classes Using Only Their String Names?

Java에서 이름으로 클래스 인스턴스화

Java는 문자열 이름을 전달하여 클래스를 인스턴스화하는 두 가지 방법을 제공합니다.

1. 인수 없는 생성자와 함께 리플렉션 사용

대상 클래스에 인수 없는 생성자가 있는 경우 Class.forName() 메서드를 사용하여 Class 객체를 얻을 수 있습니다. 그런 다음 newInstance() 메서드를 호출하여 인스턴스를 만듭니다.

Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();

2. 인수 없는 생성자가 있거나 없는 클래스에 대해 리플렉션 사용

인수 없는 생성자가 있거나 없는 클래스에 작동하는 보다 포괄적인 접근 방식을 보려면 다음 단계를 따르세요.

  1. Class.forName()을 사용하여 Class 객체를 검색합니다.
  2. getConstructor() 메서드를 사용하여 생성자 객체를 얻습니다. 필요한 경우 매개변수 유형을 지정합니다.
  3. 생성자 객체에서 newInstance()를 호출하고 필수 매개변수를 전달하여 클래스를 인스턴스화합니다.
Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);

참고: 두 접근 방식 모두 리플렉션을 포함하며, 이는 Java의 예외 처리 및 보안 제약 조건을 우회할 수 있으므로 신중하게 사용해야 합니다.

위 내용은 문자열 이름만 사용하여 Java 클래스를 인스턴스화하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.