我正在尝试使用填充 POJO 的字段BeanUtilsBean.populate(object, fieldNameVSfieldValueMap)
method.
我的 POJO 看起来像:
class POJO{
Integer intField;
Double doubleField
String str;
}
目前我有一个 HashMap,其中包含字段名称和字段值之间的映射。
现在使用以下代码:
POJO obj = new POJO();
Map<String,String> map = new HashMap<>();
map.put("intField", "1");
map.put("doubleField", "1.1");
BeanUtilsBean.populate(obj, map)
通过我的 POJO 对象 obj 中的上述代码,字段 intField 和 doubleField 分别填充值 1 和 1.1,这符合预期。
这样做的问题是,字符串字段 str 被分配给它 null,因为 hashmap 中没有 str 的条目,并且 null 是 String 的默认值。
但我想要的是一种明确的方法,当地图中未提及字段时,将自定义值设置为字段。
对于这个例子,假设我想将 str 设置为“john”,因为地图中没有 str 的条目。
编辑1:
而且这应该特定于字段类型。因此,如果 POJO 中还有其他字段并且它们是 String 类型,那么对于所有这些 String 字段,如果 Map 中不存在条目,则应使用 John 填充。
编辑 2: POJO 是在我无权提交访问的不同项目中定义的,因此在 POJO 本身中设置默认值对我来说不是一个解决方案。
基本上你可以这样做:
Map<String, String> map = new HashMap<>() { // new HashMap<String, String> perhaps
@Override
public String get(Object key} {
return super.getOrDefault(key, "john");
}
}
如果您希望每个字段有不同的默认值,请使用预先填充默认值的本地地图。
那么你应该创建自己的类。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)