Bidang halaman daftar mengharuskan mereka dapat diurutkan sesuai dengan preferensi pengguna, sehingga bidang masing -masing pengguna sesuai dengan urutan yang berbeda (pesanan lapangan disimpan dalam database). Nilai-nilai yang kami ambil dari database adalah objek, tetapi nilai transfer latar depan adalah array Ajax dan JSON, jadi kami menghadapi masalah konversi objek-ke-json: 1. Urutan lapangan setiap pengguna tidak diperbaiki, dan kode tidak dapat ditulis mati. 2. Dapatkan nilai sesuai dengan urutan lapangan pengguna. Jika Anda menggunakan jika untuk menilai setiap nilai dan kemudian hubungi metode yang berbeda, ada terlalu banyak jika pernyataan bersyarat. Lalu aku melihat refleksi.
Kelas model, sama seperti model normal
orang kelas publik {nama string privat; usia int pribadi; alamat string pribadi; Private String Phonenumber; seks string pribadi; public string getName () {return name; } // Berikut ini adalah metode Get and Set, dihilangkan. } Kelas tes
impor java.lang.reflect.invocationTargetException; impor java.lang.reflect.method; import java.util.arraylist; import java.util.list; tes kelas publik {// init orang objek. orang pribadi initperson () {person p = orang baru (); p.setname ("name"); p.setage (21); p.setAddress ("Ini addrss saya"); p.setphonenumber ("12312312312"); p.setsex ("f"); mengembalikan P; } public static void main (String [] args) melempar SecurityException, NosuchMethodeException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {test test = test baru (); Orang p = test.Initperson (); Daftar <String> Daftar = ArrayList baru <string> (); // Tambahkan semua metode mendapatkan. // Tidak ada '()' nama metode. list.add ("getName"); list.add ("getage"); list.add ("getAddress"); list.add ("getphonenumber"); list.add ("getsex"); untuk (string str: list) {// Dapatkan contoh metode. Param pertama adalah nama metode dan param kedua adalah tipe param. // Karena Java keluar dari metode yang sama dari params yang berbeda, hanya nama metode dan tipe param yang dapat mengkonfirmasi suatu metode. Metode metode = p.getClass (). GetMethod (str, kelas baru [0]); // Param pertama dari metode Invoke adalah objek yang menyebut metode ini. // Param kedua adalah param. System.out.println (str + "(): Get value adalah" + Method.invoke (p, objek baru [0])); }}}Anda juga dapat menggunakan bidang yang diperoleh oleh database untuk mendapatkan nilai yang sesuai dari objek.
Metode di atas perlu menambahkan nama metode GET ke daftar sehingga nilainya dapat diperoleh berdasarkan nama metode GET yang sesuai. Jika latar depan hanyalah nama properti, maka kita harus mengubahnya menjadi metode GET yang sesuai, yang merepotkan.
public static void getValuebyProperty (Person P, String PropertyName) Melemparkan IntrospectionException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {// Dapatkan properti dengan argumen PropertiName. PropertyDescriptor PD = New PropertyDescriptor (PropertiDyName, p.getClass ()); Metode metode = PD.GetReadMethod (); Objek o = metode.invoke (p); System.out.println ("PropertiyName:" + PropertiDyName + "/T Nilai adalah:" + o); } public static void main (String [] args) melempar SecurityException, NosuchMethodeException, IllegalargumentException, IllegalAccessException, InvocationTargetException, IntrospectionException {Test test = new test (); Orang p = test.Initperson (); // Dapatkan semua properti. Bidang [] bidang = p.getClass (). GetDeclaredFields (); untuk (bidang bidang: bidang) {getValuebyProperty (p, field.getName ()); }} Dengan cara ini, Anda dapat secara langsung mendapatkan nilai yang sesuai melalui PropertiDyName yang dilewati.
Artikel di atas Java Reflection secara dinamis memanggil metode yang berbeda (contoh) sesuai dengan nama metode yang berbeda adalah semua konten yang saya bagikan dengan Anda. Saya harap ini dapat memberi Anda referensi dan saya harap Anda dapat mendukung wulin.com lebih lanjut.