通过Java反射调用方法
通过Java反射调用方法
这是个测试用的例子,通过反射调用对象的方法。
TestRef.java
import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; /** * Created by IntelliJ IDEA. * File: TestRef.java * User: leizhimin * Date: 2008-1-28 14:48:44 */ public class TestRef { public static void main(String args[]) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { Foo foo = new Foo("这个一个Foo对象!"); Class clazz = foo.getClass(); Method m1 = clazz.getDeclaredMethod("outInfo"); Method m2 = clazz.getDeclaredMethod("setMsg", String.class); Method m3 = clazz.getDeclaredMethod("getMsg"); m1.invoke(foo); m2.invoke(foo, "重新设置msg信息!"); String msg = (String) m3.invoke(foo); System.out.println(msg); } } class Foo { private String msg; public Foo(String msg) { this.msg = msg; } public void setMsg(String msg) { this.msg = msg; } public String getMsg() { return msg; } public void outInfo() { System.out.println("这是测试Java反射的测试类"); } }
控制台输出结果:
这是测试Java反射的测试类 重新设置msg信息! Process finished with exit code 0

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Refleksi Java ialah alat berkuasa yang membolehkan anda mengakses medan peribadi dan kaedah kelas, dengan itu mendedahkan kerja dalaman perisian. Ini berguna dalam bidang seperti kejuruteraan terbalik, analisis perisian dan penyahpepijatan. Untuk menggunakan refleksi Java, anda perlu mengimport pakej java.lang.reflect terlebih dahulu. Kemudian, anda boleh menggunakan kaedah Class.forName() untuk mendapatkan objek Kelas sesuatu kelas. Sebaik sahaja anda mempunyai objek Kelas, anda boleh menggunakan pelbagai kaedah untuk mengakses medan dan kaedah kelas. Sebagai contoh, anda boleh menggunakan kaedah getDeclaredFields() untuk mendapatkan semua medan kelas, termasuk medan peribadi. Anda juga boleh menggunakan kaedah getDeclaredMethods().

Kaedah mendapatkan: 1. Buat objek sampel; 2. Dapatkan nilai medan melalui medan.get(orang), di mana orang ialah objek sampel dan medan ialah objek Medan, mewakili medan 3. Tetapkan medan melalui setAccessible (benar) Dalam keadaan boleh diakses, medan peribadi pun boleh mendapatkan nilainya; 4. Lintas tatasusunan medan, dapatkan nama dan nilai yang sepadan bagi setiap medan dan cetaknya.

Prinsip mekanisme pantulan Java ialah apabila fail bytecode dimuatkan ke dalam memori, jvm akan membedah bytecode dan mencipta objek Class bagi objek tersebut. Jvm menyimpan semua maklumat fail bytecode ke dalam objek Class objek Kelas, anda boleh menggunakan objek untuk menetapkan sifat atau kaedah objek, dsb. Mekanisme pantulan ialah fungsi untuk mengetahui semua atribut dan kaedah mana-mana kelas dalam keadaan berjalan Untuk sebarang objek, ia boleh memanggil mana-mana atribut dan kaedahnya, memperoleh maklumat secara dinamik, dan memanggil kaedah objek secara dinamik.

Langkah-langkah untuk mencipta objek melalui mekanisme refleksi Java adalah seperti berikut: Muatkan kelas sasaran: Gunakan kaedah Class.forName(). Dapatkan pembina: gunakan kaedah getDeclaredConstructor(). Cipta objek: Gunakan kaedah newInstance() untuk menghantar parameter.

Pemahaman mendalam tentang prinsip dan aplikasi mekanisme refleksi Java 1. Konsep dan prinsip mekanisme refleksi Mekanisme refleksi merujuk kepada keupayaan untuk memperoleh maklumat kelas secara dinamik, mengakses dan mengendalikan ahli kelas (sifat, kaedah, pembina, dll.) manakala program sedang berjalan. Melalui mekanisme pantulan, kita boleh mencipta objek secara dinamik, kaedah panggilan dan sifat akses semasa program berjalan, tanpa mengetahui maklumat khusus kelas pada masa penyusunan. Teras mekanisme pantulan ialah kelas dan antara muka dalam pakej java.lang.reflect. Antaranya, kelas Kelas mewakili bait kelas

Pengecualian NoSuchFieldException dalam Java merujuk kepada pengecualian yang dilemparkan apabila cuba mengakses medan yang tidak wujud (Field) semasa refleksi. Di Java, refleksi membolehkan kami memanipulasi kelas, kaedah, pembolehubah, dll. dalam atur cara melalui kod, menjadikan atur cara lebih fleksibel dan berskala. Walau bagaimanapun, apabila menggunakan refleksi, jika medan yang diakses tidak wujud, NoSuchFieldException akan dibuang. NoSuchFieldException

Kaedah mendapatkan: 1. Buat kelas Orang dan dapatkan objek Kelas kelas melalui refleksi 2. Gunakan kaedah getDeclaredFields untuk mendapatkan semua medan kelas 3. Dengan melintasi tatasusunan medan, tetapkan medan kepada keadaan yang boleh diakses; dan kemudian gunakan get Kaedah mendapat nilai medan dan mencetak nama dan nilai medan.

Kaedah panggilan refleksi java ialah: 1. Kelas kelas 2. Kelas pembina; 4. Kelas kelas; Pengenalan terperinci: 1. Kelas kelas, digunakan untuk mendapatkan maklumat kelas, termasuk nama kelas, pembolehubah ahli dan kaedah, dsb. Anda boleh mencipta contoh kelas melalui kaedah "newInstance()" kelas Kelas 2. Pembina; digunakan untuk mendapatkan jenis parameter Pembina, pengubah suai, jenis pulangan dan maklumat lain, dsb.
