从对象中检索bean属性值

时间:2014-02-26 13:02:39

标签: java spring apache-commons-beanutils

我的班级有多个带getter和setter的字段

在尝试访问bean的属性值时,我必须检查属性名称并检索值..

if(property is this )
    mybean.getThisProperty()    
else if(property is that )    
    mybean.getThatProperty()
else...

如何在不实际检查属性名的情况下退休..

Spring中的

BeanUtils.copyProperties将属性从一个bean复制到另一个bean

2 个答案:

答案 0 :(得分:1)

我不确定你想要完成什么,但你可以使用反射来做这样的事情:

for (Field field : object.getClass().getDeclaredFields()) {
        field.setAccessible(true);
        String name = field.getName();
        Object value;
        try {
            if (name.equals(desiredPropertyName)) {
                value = field.get(object); // Do whatever you want with the
                                            // value
            }
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }

    }

在上面的代码中,我们将“对象”中的所有属性都放在私有字段中,而不使用getter。 这一行让我们可以访问私有字段:

field.setAccessible(true);

此行检索名称:

String name = field.getName();

此行检索值:

value = field.get(object);

如果你真的想使用getter,那么这是另一个主题,你将不得不使用反射来调用方法。

答案 1 :(得分:0)

怎么样?

PropertyUtils.getSimpleProperty

of Apaches commons.beanutils