Java Reflection_Simple Contoh mengubah variabel dan metode secara pribadi
kelas demotest {private string name = "123"; public getName () {System.out.println ("public getName" + name); nama pengembalian; } private getName2 () {System.out.println ("private getName2" + name); nama pengembalian; }}Misalnya, ubah nilai nama. Cara mengubah. Bagaimana mengubah melalui refleksi java
Pertama -tama mari kita lihat cara menggunakan refleksi untuk memanggil metode getName
class <demotest> calzz = demotest.class; constructor cons = clazz.getConstructor (kelas baru [] {}); // Ini adalah konstruktor untuk mendapatkan objek kelas. Objek kelas yang parameternya dibangun. Misalnya: Demotest memiliki metode konstruktor Demotest publik (string arg0, string arg1) {......}
Pada saat ini, konstruktor cons = clazz.getConstructor (kelas baru [] {string.class, string.class}); Dua string.cals masing -masing berhubungan dengan ARG0 dan ARG1.
Berikutnya adalah:
Demotest test = (demotest) cons.newInstance (objek baru [] {}); // Hasilkan objek yang sesuai. Parameter objek baru [] {} adalah nilai spesifik dari parameter yang sesuai dengan metode konstruksi. Seperti yang disebutkan sebelumnya: tes demotest = (demotest) cons.newinstance (objek baru [] {"li che", "zhang san"}); Berikutnya:
Metode metode = clazz.getMethod ("getName", kelas baru [] {string.class}); method.invoke (test, objek baru [] {"wang wu"});Saat ini, Anda dapat mencetak Wu Wu.
Lalu bagaimana mengubah nilai nama sebagai pribadi.
1. Dapatkan lapangan terlebih dahulu,
Bidang lapangan = clazz.getDeclaredfield ("name"); 2. Atur bendera yang dapat diakses dari objek ini ke nilai boolean yang ditunjukkan. Nilai True menunjukkan bahwa objek yang dipantulkan harus membatalkan pemeriksaan akses bahasa Java saat digunakan. Nilai False menunjukkan bahwa objek yang dipantulkan harus melakukan pemeriksaan akses bahasa Java.
field.setAccessible (true);
3. Ubah nilai variabel
field.set ("name", "wang wu");OKE;
Hal yang sama berlaku untuk mengakses metode pribadi.
Metode metode = clazz.getDeclaredMethod ("getName2"); method.setAccessible (true); method.invoke (test, objek baru [] {"wang wu"});Gunakan GetDeclaredFields untuk mendapatkan bidang yang dilindungi pribadi dan publik
Jika Anda menggunakan C.GetFields (); Anda hanya bisa mendapatkan properti dari tipe publik
Contoh Java Reflection_Simple di atas dari mengubah variabel dan metode secara pribadi adalah semua konten yang saya bagikan dengan Anda. Saya harap Anda dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.