JavaBean 的属性自省

首先我们要知道什么是javabean,而属性指的是什么 ?

javabean可以理解是一种规范,编码要有一定的规范,不然别人很难维护你的代码

属性就是一个类中的getter setter方法,(狭义理解)。如果一个成员变量有getter setter方法,我们
可以说这个成员变量就是属性。

属性是如何自省的?

自省,听起来跟 反射的自省差不多,其实很相似。大家都是通过字节码来映射出自身的元素!

反射映射出整个类,属性自省就映射出属性的全部,就是名字,getter 和setter 方法

自省用Introspector 类来描述,自省这个功能 ,能把 自己的属性打包好拿,得到一个BeanInfo接口的实例

BeanInfo info = Introspector.getBeanInfo(Person.class,Object.class)

因为要自省,所以要加入自己的字节码,后面的是父类字节码,如果不加,父类的属性class也会获取到!
最好不要,因为没有,而且拿了有时会出现很多问题

得到的BeanInfo还不能直接用,因为里面有很多属性打包在一起,我要用要属性描述器PropertyDescriptor

这个描述器可以把一个属性的信息出拿出来,

PropertyDescriptor [ ] pds = info.PropertyDescriptors( );

循环迭代,把每个属性的描述器拿出来

得到后,就可以获取属性的东西

Method m = pd.getWriteMethod( ); 相当于getter方法

Method m1 = pd.getReadMethod ( ); 相当于setter方法

String name = pd.getName ( );

你可能感兴趣的:(JavaBean 的属性自省)