java内省

来源:互联网 发布:淘宝网店设计教程 编辑:程序博客网 时间:2024/06/05 16:44

内省

开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性,例如类A中有属性name,那我们可以通过getName,setName来得到其值或者设置新的值。

小案例

import java.beans.*;

publicclassIntrospectorDemo {

    String name;

    intage;

   //省略get,Set方法

    publicstaticvoid main(String[]args)throws Exception{

        IntrospectorDemo demo = newIntrospectorDemo();

        demo.setName("LiWang"); 

        demo.setAge(20);

        /*如果不想把父类的属性也列出来的话,

           getBeanInfo的第二个参数填写父类的信息*/          

        BeanInfo bi = Introspector.getBeanInfo(demo.getClass(),Object.class);

        //Property:财产 Descriptor:描述符

        PropertyDescriptor[] props =bi.getPropertyDescriptors();

        for(inti=0;i<props.length;i++){

            System.out.println(props[i].getName()+"="+

                   //getReadMethod()获得用于读取属性值的方法(get())

                    props[i].getReadMethod().invoke(demo,null));

        }

    }  

}

结果:

age=20

name=Li Wang

 

原创粉丝点击