您的位置:首页 > 编程语言 > Java开发

利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

2016-11-15 16:24 736 查看
本文转载自:http://www.cnblogs.com/tclee/archive/2012/02/28/2012773.html

在上面这篇文档中,作者使用了Java jdk中的反射来调用set方法。

个人愚见:如果是javaBean的话,我们可以使用内省来操作属性,jdk中提供了:

java.beans.Introspector和java.beans.PropertyDescriptor来进行内省操作

private static void setProperties(Object pt1, String propertyName,

            Object value) throws IntrospectionException,

            IllegalAccessException, InvocationTargetException {

        PropertyDescriptor pd2 = new PropertyDescriptor(propertyName,pt1.getClass());

        Method methodSetX = pd2.getWriteMethod();

        methodSetX.invoke(pt1,value);

    }

    private static Object getProperty(Object pt1, String propertyName)

            throws IntrospectionException, IllegalAccessException,

            InvocationTargetException {

        /*PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());

        Method methodGetX = pd.getReadMethod();

        Object retVal = methodGetX.invoke(pt1);*/

        

        BeanInfo beanInfo =  Introspector.getBeanInfo(pt1.getClass());

        PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();

        Object retVal = null;

        for(PropertyDescriptor pd : pds){

            if(pd.getName().equals(propertyName))

            {

                Method methodGetX = pd.getReadMethod();

                retVal = methodGetX.invoke(pt1);

                break;

            }

        }

        return retVal;

    }

另外,我们也可以使用Apache提供的给我们的BeanUtils和PropertyUtils来进行内省操作

org.apache.commons.beanutils.PropertyUtils.setProperty(Object bean, String name, Object value)

sorg.apache.commons.beanutils.BeanUtils.etProperty(Object bean, String name, Object value)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐