比方說,我有一個簡單的類人最佳實踐
public class Person{
final List<String> names= Lists.newArrayList();
public List<String> getNames(){
return names;
}
}
如果我嘗試deserialise與傑克遜(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
。
這是正確的解決方案還是更好的只是爲了使列表非最終?
是否有Jackson方法使用collection.add方法初始化集合?
或者也許有更好的辦法。這裏可以提出什麼建議?
編輯:我現在發現這個設置:
USE_GETTERS_AS_SETTERS(默認值:true)控制是否 返回集合或地圖類型可用於「設置」值(同一 如何JAXB「干將」 API與XML協同工作),因此單獨的「setter」方法不需要 。即使啓用,明確的「setter」方法將具有 優先於隱式getter-as-setter(如果存在)。
看起來像我正在尋找的東西,它默認情況下。那麼爲什麼忽略呢?
是的,我同意一般。但這具體是關於收集領域和傑克遜。爲了消除任何空收集字段的機會,我只是在初始化程序中創建它們並將它們設置爲最終。人們總是可以通過集合的添加方法向其添加元素。所以收集狀態是可變的,但不是它本身。我期待着有什麼方法可以讓傑克遜使用這些添加方法來初始化集合。 – husayt