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 ( );

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转至元数据结尾创建: 董潇伟,最新修改于: 十二月 23, 2016 转至元数据起始第一章:isa和Class一....
    40c0490e5268阅读 5,845评论 0 9
  • 产品、营销和渠道谁更重要,其实这个问题也有个类似的话题: 我做什么能够多挣钱? . 翻看近期的知乎提问,除了搞笑的...
    鬼灯森林阅读 4,547评论 0 3
  • 只因为你叫周杰伦,一个我爱了整整十二年的男人。 那时的我还小,约摸十岁的小女孩,时常在想在没知道你之前,我的生活是...
    幼稚鬼真幼稚阅读 3,229评论 0 2
  • ​摘自:http://www.qdfuns.com/notes/16738/1b6ad6125747d28592a...
    许你一枝花阅读 2,934评论 0 0