javabean的内省

javabean的一部分可以看做是对数据的封装,其向外暴露出数据的getter/setter方法,

用框架开发时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。

内省访问JavaBean属性的方式:

通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器(PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。如下:

//获取bean的信息

//BeanInfo beaninfo = Introspector.getBeanInfo(Student.class);

//如果不想从父类中也获取父类的属性那么使用如下:

//Introspector.getBeanInfo(beanClass, stopClass)

//stopClass代表不用从父类获取,object有一个class的属性

BeanInfo beaninfo = Introspector.getBeanInfo(Student.class,Object.class);

//获取属性描述器

PropertyDescriptor[]  propertys = beaninfo.getPropertyDescriptors();

//获取属性描述器有 getWriteMethod();找到setXxx方法  getReadMethod();找到getXxx方法

PropertyDescriptor[] propertys  = bininfo.getPropertyDescriptors();

for (PropertyDescriptor pd : propertys) {

System.out.println("属性名称" + pd.getName());

System.out.println("属性DisplayName"+ pd.getDisplayName());

System.out.println("属性类型" + pd.getPropertyType());

System.out.println("属性set"+ pd.getWriteMethod().invoke(ps, "yetong"));

System.out.println("属性get"+ pd.getReadMethod().invoke(ps, null));

System.out.println("**************************************************");

}

然后通过Method类.invok((Object obj, Object... args))操作Bean的属性

内省的更多使用方法

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

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,899评论 18 399
  • 小编费力收集:给你想要的面试集合 1.C++或Java中的异常处理机制的简单原理和应用。 当JAVA程序违反了JA...
    八爷君阅读 10,147评论 1 114
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 一. Java基础部分.................................................
    wy_sure阅读 9,233评论 0 11
  • 我承诺,一定达成目标,要不然这一年又白白浪费了。我不想在一年又一年的制定目标中度过,尤其是每一年都TM制定相同的目...
    张仲凯阅读 1,553评论 0 0