Rumah  >  Artikel  >  Java  >  Bagaimanakah mekanisme refleksi Java memanggil pembina?

Bagaimanakah mekanisme refleksi Java memanggil pembina?

WBOY
WBOYasal
2024-04-15 13:00:021076semak imbas

Mekanisme pantulan boleh memanggil kaedah pembina melalui kaedah Constructor.newInstance(), melepasi senarai parameter sebenar untuk mencipta objek. Kaedah ini memerlukan jenis pembina dan pesanan sepadan, dan pembina mestilah awam atau mempunyai kebenaran akses yang sesuai.

Bagaimanakah mekanisme refleksi Java memanggil pembina?

Mekanisme refleksi Java memanggil kaedah pembina

Mekanisme refleksi Java menyediakan akses dinamik kepada kelas, membenarkan pemeriksaan dan pengubahsuaian kelas dan ahlinya pada masa jalan. Melalui refleksi, kita boleh memanggil kaedah pembina kelas untuk mencipta objek baharu.

Sintaks:

Untuk memanggil pembina menggunakan refleksi, anda boleh menggunakan kaedah Constructor.newInstance(). Sintaksnya adalah seperti berikut: 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
  • Antaranya:
  • args: senarai parameter sebenar yang digunakan untuk membina objek 🎜🎜🎜🎜Kes sebenar: 🎜🎜🎜Kami mencipta fail bernama kelas Person dan menyediakan pembina dengan parameter: 🎜rrreee🎜Kini, kita boleh memanggil pembina ini menggunakan pantulan: 🎜rrreee🎜Objek yang dipanggil menggunakan pantulan boleh diakses seperti objek biasa: 🎜rrreee🎜 🎜Nota : 🎜🎜
    • Memanggil pembina memerlukan menghantar jenis dan susunan parameter yang betul. 🎜
    • Pembina yang dipanggil mestilah awam atau mempunyai kebenaran akses yang sesuai. 🎜
    • Jika pembina melemparkan pengecualian, newInstance() akan membungkus pengecualian dalam InvocationTargetException dan membuangnya. 🎜🎜

Atas ialah kandungan terperinci Bagaimanakah mekanisme refleksi Java memanggil pembina?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn