[英]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.