gpt4 book ai didi

java - 使用 Bean Utils 填充 POJO 时设置字段的默认值

转载 作者:行者123 更新时间:2023-12-02 05:08:01 25 4
gpt4 key购买 nike

我正在尝试使用 BeanUtilsBean.populate(object, fieldNameVSfieldValueMap) 方法填充 POJO 的字段。

我的 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”,因为 map 中没有 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");
}
}

如果您希望每个字段有不同的默认值,请使用预填充默认值的本地 map 。

那么你应该创建自己的类。

关于java - 使用 Bean Utils 填充 POJO 时设置字段的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56339300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com