. Melalui refleksi, kita boleh mencipta objek secara dinamik, kaedah panggilan, dapatkan/tetapkan sifat, dsb. pada masa jalan, yang meningkatkan fleksibiliti dan kebolehskalaan program. Artikel ini akan memperkenalkan prinsip asas refleksi Java dan memberikan contoh kod khusus.
1. Prinsip asas refleksi
Pelaksanaan refleksi Java adalah berdasarkan kelas Kelas, yang merupakan kelas teras refleksi Java. Setiap kelas Java akan menjana objek Kelas yang sepadan selepas kompilasi maklumat Kelas boleh diperolehi melalui objek Kelas, dan operasi kelas boleh dilakukan melalui maklumat kelas. Refleksi Java terutamanya mempunyai kelas teras dan antara muka berikut:
Kelas medan: mewakili pembolehubah ahli kelas.
Kelas kaedah: mewakili kaedah ahli kelas.
// 通过类的全限定名获取Class对象 Class<?> clazz1 = Class.forName("com.example.User"); // 通过对象的getClass()方法获取Class对象 User user = new User(); Class<?> clazz2 = user.getClass();
Nilai atribut objek boleh diperoleh melalui kaedah get() kelas Medan.
Kod sampel adalah seperti berikut:
// 获取public属性值 Field field = clazz.getDeclaredField("name"); String name = (String) field.get(user); // 获取private属性值 Field privateField = clazz.getDeclaredField("age"); privateField.setAccessible(true); // 设置private属性的访问权限 int age = (int) privateField.get(user);
2.3 Menetapkan nilai atribut
Nilai atribut objek boleh ditetapkan melalui kaedah set() kelas Medan.
Kod sampel adalah seperti berikut:
// 设置public属性值 Field field = clazz.getDeclaredField("name"); field.set(user, "Tom"); // 设置private属性值 Field privateField = clazz.getDeclaredField("age"); privateField.setAccessible(true); // 设置private属性的访问权限 privateField.set(user, 20);
2.4 Kaedah panggilan
Kaedah objek boleh dipanggil melalui kaedah invoke() kelas Kaedah.
Kod sampel adalah seperti berikut:
// 调用无参方法 Method method1 = clazz.getDeclaredMethod("sayHello"); method1.invoke(user); // 调用带参方法 Method method2 = clazz.getDeclaredMethod("sayHi", String.class); method2.invoke(user, "Jack");
2.5 Mencipta objek
Objek boleh dibuat melalui kaedah newInstance() kelas Pembina.
Kod sampel adalah seperti berikut:
Constructor<?> constructor = clazz.getDeclaredConstructor(String.class, int.class); User newUser = (User) constructor.newInstance("Lucy", 25);
Ringkasan:
Refleksi Java ialah ciri berkuasa dalam bahasa Java, yang boleh memperoleh maklumat kelas secara dinamik dan mengendalikan ahli kelas pada masa jalan. Prinsip asas refleksi adalah untuk mendapatkan maklumat kelas melalui kelas Kelas dan melaksanakan operasi khusus melalui Medan, Kaedah, Pembina dan objek lain. Dalam aplikasi sebenar, kami boleh menggunakan mekanisme refleksi untuk merealisasikan pelbagai keperluan dinamik dan meningkatkan fleksibiliti dan skalabiliti program.Atas ialah kandungan terperinci Prinsip asas dan kaedah panggilan refleksi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!