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的属性

内省的更多使用方法

你可能感兴趣的:(javabean的内省)