JAVA 获取Bean对象的属性名和该属性对应的值

主要使用到了java.beans包下的类,利用底层反射来获取对象对应的属性和方法;

** BeanInfo **:提供有关Bean的显式信息的接口,其中包含类的属性,方法、事件等显式信息,可以通过Introspector底层反射机制获取


** Introspector **:用于构建一个一个全面描述目标bean的BeanInfo对象,使用低层次的反射来研究类的方法,并应用标准设计模式来标识属性存储器、事件源或公共方法。然后深入分析类的超类,并从它那里添加信息


** PropertyDescriptor ** :描述 Java Bean 通过一对存储器方法导出的一个属性以及该属性的getter和setter方法


相关实现代码:


  public void test(Project project){
        BeanInfo beanInfo;
        try{
            //throws IntrospectionException
            beanInfo=Introspector.getBeanInfo(project.getClass(), Object.class);
            if(beanInfo!=null){
                PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
                for(PropertyDescriptor p:propertyDescriptors){
                    //获得属性名称
                    System.err.println(p.getName());
                    //调用该属性名称对应的getter方法
                    //throws IntrospectionException,InvocationTargetException,IllegalAccessException
                    Object obj = new PropertyDescriptor(p.getName(), Project.class).getReadMethod().invoke(project);
                    //调用该属性名称对应的setter方法
                    //throws IntrospectionException,InvocationTargetException,IllegalAccessException
                    new PropertyDescriptor(p.getName(), Project.class).getWriteMethod().invoke(project,new Object[]{"1"});
                }
            }

        }catch (IntrospectionException e){

        }catch (InvocationTargetException e1){

        }catch (IllegalAccessException e2){

        }

你可能感兴趣的:(JAVA 获取Bean对象的属性名和该属性对应的值)