想法是有一个POJO:
class MyBean {
long id;
int count;
public void setCount(int count){
this.count = count;
}
}
现在,我需要将计数自动存储为:
put("count", count);
或简单地说,put("fieldname", fieldvalue);
是否有一个可用于MyBean
可以用于此目的的库?我可以很容易地做一个复制构造函数或者其他东西,但是,这里的重点是自动化,而且我的应用程序中有很多模型将使这个Map存储POJO值......
答案 0 :(得分:0)
您可以使用Apache Commons BeanUtils' PropertyUtils
创建一个简单的PropertyMapGeneratorpublic class PropertyMapGenerator {
public static Map<String, Object> getPropertyMap(Object object) {
HashMap<String, Object> propertyMap = new HashMap<>();
// retrieve descriptors for all properties
PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(object);
for (PropertyDescriptor descriptor : descriptors) {
// check if there is a reader method for this property i.e. if it can be accessed
if (descriptor.getReadMethod() != null) {
String name = descriptor.getName();
try {
propertyMap.put(name, PropertyUtils.getProperty(object, name));
} catch (Exception e) {
// handle this properly
e.printStackTrace();
}
}
}
return propertyMap;
}
}
现在您只需将POJO传递给此生成器:
Map<String, Object> propertyMap = PropertyMapGenerator.getPropertyMap(myBean);