美文网首页
javabean的内省

javabean的内省

作者: 叶桐学 | 来源:发表于2016-12-21 17:55 被阅读0次

    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的内省

          本文链接:https://www.haomeiwen.com/subject/jmwqvttx.html