Java:如何调用变量的所有setter方法?
我有一个Java POJO类:Java:如何调用变量的所有setter方法?,java,Java,我有一个Java POJO类: public class Person private String name; private Integer age; private Map<String, Object> someMap; // some other fields ... // setters and getters of all fields ... } 公共类人物 私有字符串名称; 私人整数年龄; 私人地图; //其他一些领域 ... //所有
public class Person
private String name;
private Integer age;
private Map<String, Object> someMap;
// some other fields
...
// setters and getters of all fields
...
}
公共类人物
私有字符串名称;
私人整数年龄;
私人地图;
//其他一些领域
...
//所有字段的setter和getter
...
}
在我的主程序中,我有一个映射图
,它包含了个人的所有值
:一个例子可以是映射:{“name”:“Tom”,“age”:17,“someMap”:{“a”->“b”}
我的问题是:不需要逐个调用setter,是否可以调用object
person
的所有setter,并在映射中设置值?(因为我有200多个字段)可以使用reflection/Spring/Apache库来完成吗?如果您想通过reflection来完成,我想这可以:
for(Map.Entry<String,Object> entry : map.entrySet()){
Person p = new Person();
p.getClass().getDeclaredField(entry.getKey()).setAccessible(true);
p.getClass().getDeclaredField(entry.getKey()).set(entry.getClass(), entry.getValue());
p.getClass().getDeclaredField(entry.getKey()).setAccessible(false);
}
for(Map.Entry:Map.entrySet()){
人员p=新人员();
p、 getClass().getDeclaredField(entry.getKey()).setAccessible(true);
p、 getClass().getDeclaredField(entry.getKey()).set(entry.getClass(),entry.getValue());
p、 getClass().getDeclaredField(entry.getKey()).setAccessible(false);
}
循环映射键并插入与对象字段名称匹配的值。更多信息在这里:但我真的会考虑重新设计这一类。你有没有尝试杰克逊库作为建议,在你的最后一个问题,当你要求转换POJO到地图?链接问题中的答案与相反,我有200多个字段
-你的第一个错误你是说Map.putAll()
?不清楚你在问什么。请在问题中提供更详细的描述和代码示例,说明对象及其值是什么,您正在尝试执行的操作以及对象的新值是什么。如果映射仅用于初始化对象,为什么要将其存储为成员?