繁体   English   中英

按字段名称为字段设置Java对象值

[英]Java Object Set value for field by field name

我有一个看起来像这样的对象:

public class RM {
    private int id;
    private String name;
    private String being_in_force_dt;
    private String modify_dt;
    private AREA AREA;
    private String vehicle;
}

我在xml中拥有这个对象的日期,现在我遇到一个问题:当我有一个时,如何将值输入到例如name的字段中:

String attName = xpp.getAttributeName(i); // here String = name
xpp.getAttributeValue(i) // and here is a value

我是这样做的:

  if(attName.equals("id"))
                                rm.setId(Integer.parseInt(xpp.getAttributeValue(i)));

但是也许更好的解决方法

一种可能的解决方案是对属性使用HashMap
并不是最通用的方法,但是肯定很容易实现:

public class RM {
    private HashMap<String, String> attributes = new HashMap<>();

    public void setAttribute(String attr, String val) {
        attributes.put(attr, val);
    }

    public String getAttribute(String attr) {
        attributes.get(attr);
    }
}

然后再:

rm = new RM();
rm.setAttribute(xpp.getAttributeName(i), xpp.getAttributeValue(i));

但是,这将对所有值使用String 这可能没关系,因为无论如何您都可能从XML获取字符串。 然后,由RM类的用户决定如何处理通过getAttribute()检索的值。

您可以使用Java Reflection ,这不是一个漂亮的解决方案,但可以:

    RM obj = new RM();
    Field f = obj.getClass().getDeclaredField("id");
    f.setAccessible(true);
    f.set(obj, 1);

    Assert.assertEquals(1, obj.getId());

我建议您阅读有关JAXB的文章

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM