假设我有一个简单的类 Person
public class Person{
final List<String> names= Lists.newArrayList();
public List<String> getNames(){
return names;
}
}
如果我尝试用杰克逊(2.2)反序列化它
Person l = mapper.readValue(js,Person.class);
我明白了Disabling Afterburner deserialization ....due to access error (type java.lang.IllegalAccessError ....
这是因为最终 名单。为了解决这个问题,我设置MapperFeature.ALLOW_FINAL_FIELDS_AS_MUTATORS
为false
.
这是正确的解决方案还是更好的解决方案只是使列表非最终?
是否有杰克逊方法可以使用 collection.add 方法来初始化集合?
或者也许有更好的方法。这里有什么建议?
编辑:我现在找到了这个设置:
USE_GETTERS_AS_SETTERS(默认值:true)控制返回 Collection 或 Map 类型的“getter”是否可用于“设置”值(与 JAXB API 处理 XML 的方式相同),因此不需要单独的“setter”方法。即使启用,显式“setter”方法也将优先于隐式 getter-as-setter(如果存在)。
看起来就像我在看的一样,默认情况下它是打开的。那么为什么当时被忽视了呢?