> Java > java지도 시간 > Java 리플렉션 메커니즘은 생성자를 어떻게 호출합니까?

Java 리플렉션 메커니즘은 생성자를 어떻게 호출합니까?

WBOY
풀어 주다: 2024-04-15 13:00:02
원래의
1097명이 탐색했습니다.

반사 메커니즘은 Constructor.newInstance() 메서드를 통해 생성자 메서드를 호출하여 실제 매개변수 목록을 전달하여 객체를 생성할 수 있습니다. 이 방법을 사용하려면 생성자 유형과 순서가 일치해야 하며 생성자는 공개되거나 적절한 액세스 권한이 있어야 합니다.

Java 리플렉션 메커니즘은 생성자를 어떻게 호출합니까?

Java 리플렉션 메커니즘은 생성자를 호출합니다.

Java 리플렉션 메커니즘은 클래스에 대한 동적 액세스를 제공하여 런타임 시 클래스와 해당 멤버를 검사하고 수정할 수 있도록 합니다. 리플렉션을 통해 클래스 생성자 메서드를 호출하여 새 개체를 만들 수 있습니다.

구문: ​​

리플렉션을 사용하여 생성자를 호출하려면 Constructor.newInstance() 메서드를 사용할 수 있습니다. 구문은 다음과 같습니다: Constructor.newInstance() 方法。其语法如下:

Object newInstance(Object... args) throws InstantiationException, IllegalAccessException, InvocationTargetException
로그인 후 복사

其中:

  • args:用于构造对象的实际参数列表

实战案例:

我们创建一个名为 Person 的类,并提供一个带参数的构造方法:

public class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}
로그인 후 복사

现在,我们可以使用反射调用此构造方法:

// 创建 Class 对象
Class<?> personClass = Class.forName("Person");

// 获取带有两个参数的构造方法
Constructor<?> constructor = personClass.getConstructor(String.class, int.class);

// 调用构造方法创建对象
Object person = constructor.newInstance("John", 30);
로그인 후 복사

使用反射调用的对象可以像普通对象一样访问:

System.out.println(((Person) person).getName()); // 输出: John
System.out.println(((Person) person).getAge()); // 输出: 30
로그인 후 복사

注意事项:

  • 调用构造方法需要传递正确的参数类型和顺序。
  • 被调用的构造方法必须是公开的或具有适当的访问权限。
  • 如果构造方法抛出异常,newInstance() 会将该异常包装在一个 InvocationTargetExceptionrrreee
  • 그 중:
  • args: 객체를 구성하는 데 사용되는 실제 매개변수 목록 🎜🎜🎜🎜실제 사례: 🎜🎜🎜우리는 Person 클래스라는 파일이 있고 매개변수가 있는 생성자를 제공합니다: 🎜rrreee🎜이제 리플렉션을 사용하여 이 생성자를 호출할 수 있습니다: 🎜rrreee🎜 리플렉션을 사용하여 호출된 개체는 일반 개체처럼 액세스할 수 있습니다: 🎜rrreee🎜 🎜참고 : 🎜🎜
    • 생성자를 호출하려면 올바른 매개변수 유형과 순서를 전달해야 합니다. 🎜
    • 호출된 생성자는 공개되거나 적절한 액세스 권한이 있어야 합니다. 🎜
    • 생성자가 예외를 발생시키는 경우 newInstance()는 해당 예외를 InvocationTargetException으로 래핑하여 발생시킵니다. 🎜🎜

위 내용은 Java 리플렉션 메커니즘은 생성자를 어떻게 호출합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿