Java通过属性名称获取属性值

前端之家收集整理的这篇文章主要介绍了Java通过属性名称获取属性值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
Java中可以通过其名称获取属性值吗?
例如,我有类喜欢
public class Test {
    private String field;
    public String getField() {...}
    public void setField() {...}
}

和另一个类与地图

public class Main {
    private static final Map<String,Long> map = new HashMap<String,Long>();
    static {
        map.put("field",new Long(1));
    }
    public void doSth() {
    Set<String> keys = map.keySet();
    Test t = new Test();
    for (String key : keys) {
    //t.getPropertyValueByName(key); ?
    }
    }

解决方法

您可以使用一些提供基于属性的访问的库.我认为最着名和使用的是 beanutils.你可以找到一个很好的例子,在“在行动” here的beanutils.
一些示例代码
A someBean = new A();

// access properties as Map
Map<String,Object> properties = BeanUtils.describe(someBean);
properties.set("name","Fred");
BeanUtils.populate(someBean,properties);

// access individual properties
String oldname = BeanUtils.getProperty(someBean,"name");
BeanUtils.setProperty(someBean,"name","Barny");

猜你在找的Java相关文章