Terkadang Anda tahu apa yang ada di dalam objek ini, tetapi karena berbagai alasan, Anda tidak dapat mengubahnya menjadi suatu objek. Anda hanya ingin hanya mengekstrak beberapa hal dari objek ini. Anda perlu menggunakan refleksi saat ini.
Jika kelas Anda terlihat seperti ini:
Pengguna kelas pribadi {string username; string userpassword; public string getUserName () {return username;} public void setusername (string userName) {this.userName = username;} string publik getUserPassword () {return userpassword;} public void setuserPassword (string ouberword () {UserPassword;Kami yang baru, menetapkan nilai, dan mengubah ke atas menjadi objek
Pengguna pengguna = pengguna baru (); user.setUserName ("xu fenglai"); user.setUserPassword ("1596666"); objek objek = pengguna;Dapatkan nama atribut dan simpan dalam array
java.lang.reflect.field [] fields = object.getClass (). getDeclaredFields (); untuk (java.lang.reflect.field f: bidang) {log.i ("xbh", f.getname ());}Keluaran
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: ini $ 0
12-17 12: 02: 10.199 22949-22949/com.example.wechat I/XBH: Nama pengguna
12-17 12: 02: 10.199 22949-22949/com.example.wechat I/XBH: UserPassword
12-17 12: 02: 10.199 22949-22949/com.example.wechat i/xbh: $ ubah
12-17 12: 02: 10.199 22949-22949/com.example.wechat I/xBH: SerialVersionuid
Anda dapat melihat bahwa dua nama atribut yang kami definisikan muncul, dan tiga lainnya termasuk tanpa mengkhawatirkannya.
Dapatkan nilai atribut, pertama -tama dapatkan metode GET, dan kemudian dapatkan dengan memanggil metode GET.
java.lang.reflect.method [] method = object.getClass (). getDeclaredMethods (); // Dapatkan semua metode untuk (java.lang.reflect.method m: metode) {System. <em> out </em> .println (m.getName ()); if (m.getName (). startswith ("get")) {objek o = null; coba {o = m.invoke (objek); } catch (IllegalAccessException | InvocationTargetException e) {e.printstacktrace (); } if (o! = null &&! "". Equals (o.toString ())) {log.i ("xbh", o.toString ()); }} Keluaran
12-17 12: 09: 33.429 29677-29677/com.example.wechat I/xbh: xu fenglai
12-17 12: 09: 33.429 29677-29677/com.example.wechat I/XBH: 1596666
Bahwa pernyataan jika adalah metode untuk mendapatkan awal Get
Invoke in Coba jalankan metode ini dan masukkan nilai pengembalian ke o
Tidak mendapatkan nilai atribut melalui metode get
java.lang.reflect.field fi = null; // Dapatkan atribut cobalah {fi = object.getClass (). getDeclaredfield ("nama pengguna");} catch (nosuchfieldException e) {e.printstacktrace ();} fi.setAccessable (true);/e.printStackTrace ();} fi.setAccessable (true);/e.printStackTrace ();} fi.setAccessable (true);/e.printStackTrace ();} fi.setAccessable (true);/e.printstackTrace ();} The Obybabe to The Obybabe To The Obybabe To The Obybibe To The Obypory To The RETIGEICE (); {Log.i ("xbh", fi.get (objek) .toString ());} catch (ilegalAccessException e) {e.printstacktrace ();} Keluaran
12-17 12: 17: 34.419 4732-4732/com.example.wechat i/xbh: xu fenglai
Anda bisa mendapatkannya langsung melalui metode getDeclaredfield (perhatikan bahwa itu berbeda dari metode getDeclaredFields di atas). Tetapi jika atribut Anda bersifat pribadi, Anda pasti tidak akan dapat mengaksesnya, sehingga Anda dapat mengaksesnya dengan mengatur atribut ini ke publik (setAccession).
Selain itu, jika Anda mendapatkan data JSON, Anda tidak perlu menguraikan objek di dalamnya, cukup ubah menjadi peta.
Misalnya
{"Code": 0, "List": [{"username": "3294727437", "userpassword": "xbh1", "userivatar": "https://img1.imgtn.bdimg.com/it/u/u003d3d3d3746072/bdimg.com/it/u/u003
Anda mendapatkan koleksi berikut melalui jsonarray ("Daftar"), dan kemudian dapatkan satu objek melalui Get (i). Bahkan, objek di awal dikonversi menjadi peta, jadi periksa dengan cermat. Oleh karena itu, tidak perlu mencerminkan dan mendapatkan atribut. Anda dapat secara langsung berubah menjadi peta untuk mengambil data.
menyukai
Peta <string, string = ""> map = (peta <string, string = "">) u; map.get ("userivatar"); </string,> </string,>Meringkaskan
Di atas adalah semua konten artikel ini tentang refleksi java untuk mendapatkan penguraian kode nilai atribut objek. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!