Java:如何调用变量的所有setter方法?

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 ... } 公共类人物 私有字符串名称; 私人整数年龄; 私人地图; //其他一些领域 ... //所有

我有一个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
  ...
}
公共类人物
私有字符串名称;
私人整数年龄;
私人地图;
//其他一些领域
...
//所有字段的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()
?不清楚你在问什么。请在问题中提供更详细的描述和代码示例,说明对象及其值是什么,您正在尝试执行的操作以及对象的新值是什么。如果映射仅用于初始化对象,为什么要将其存储为成员?