Dalam pengaturcaraan sebenar, kita sering memerlukan kelas yang membungkus objek nilai, seperti Pelajar, Pekerja, Pesanan, selalunya tiada kaedah perniagaan dalam kelas ini, hanya untuk merangkum objek entiti yang perlu diproses, mereka mempunyai ciri-ciri berikut:
Atribut semuanya bersifat peribadi; 🎜 >
Sebagai contoh, contoh berikut:
: Untuk mendapatkan sifat JavaBean, Peristiwa dan kaedah menyediakan kaedah standard; biasanya kaedah getBeanInfo digunakan untuk mengembalikan objek BeanInfo; secara langsung, dan objek jenis ini biasanya dikembalikan melalui kelas Introspektor, yang menyediakan Kaedah yang mengembalikan objek deskriptor harta (PropertyDescriptor), objek deskriptor kaedah (MethodDescriptor), dan objek deskriptor kacang (BeanDescriptor); >
: digunakan untuk menerangkan atribut mempunyai kaedah pengambil dan penetap
package com.shixun.introspector; public class Employee { private String name; private Double score; // age将被内省认为是属性 public int getAge(){ return 30; } // name将被内省认为是属性 public String getName() { return name; } public void setName(String name) { this.name = name; } // score将被内省认为是属性 public Double getScore() { return score; } public void setScore(Double score) { this.score = score; } public static void main(String[] args) { } }Anda boleh menggunakan kaedah kelas PropertyDescriptor untuk mendapatkan maklumat berkaitan harta contoh, kaedah getName mengembalikan nama harta: Ia ditakrifkan dalam kelas PropertyDescriptor Kaedah boleh mendapatkan kaedah getter dan setter atribut
Contoh kod: Dapatkan maklumat berkaitan atributjava.beans.Introspector类
Java.beans.BeanInfo接口
Java.beans.PropertyDescriptor类
Hasil larian adalah seperti berikut:
方法 | 方法描述 |
---|---|
Method getReadMethod() | 回属性对应的getter方法对象; |
Method getWriteMethod() | 回属性对应的setter方法对象; |
Nota tentang introspeksi atribut
//获取BeanInfo的对象 BeanInfo employeeBeanInfo = Introspector.getBeanInfo(Employee.class); //通过BeanInfo对象获取PropertyDescriptor属性描述 PropertyDescriptor[] propertyDescriptors = employeeBeanInfo.getPropertyDescriptors(); System.out.println("通过Inspector内省机制获取JavaBean属性======= 打印所有信息 ===================="); Arrays.stream(propertyDescriptors).forEach(f->{ System.out.println("===================================="); System.out.println("属性名:"+f.getName()); System.out.println("类型:"+f.getPropertyType()); System.out.println("get方法:"+f.getReadMethod()); System.out.println("set方法:"+f.getWriteMethod()); }); // 或者用增强for System.out.println("通过Inspector内省机制获取JavaBean属性======= 打印所有信息 ===================="); for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { System.out.println("===================================="); System.out.println("名字:" + propertyDescriptor.getName()); System.out.println("类型:" + propertyDescriptor.getPropertyType()); System.out.println("get方法:" + propertyDescriptor.getReadMethod()); System.out.println("set方法:" + propertyDescriptor.getWriteMethod()); }Banyak rangka kerja menggunakan mekanisme introspeksi untuk mendapatkan semula atribut objek apabila mentakrifkan nama atribut, namanya ialah Paling baik, sekurang-kurangnya bermula dengan dua huruf kecil, seperti stuName, dan bukannya menggunakan sName Dalam sesetengah kes, ia mungkin menyebabkan pengambilan atribut gagal; atribut mengikut mekanisme introspeksi, Kaedah getter dan setter mengesahkan nama hartanah dan bukannya menentukannya berdasarkan nama pembolehubah ahli yang diisytiharkan dalam kelas; >
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan mekanisme introspeksi Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!