我想用Jackson來序列化和反序列化一個自定義的數字類,它擴展了java.lang.Number
。下面是該課程的準系統實施,沒有擴展Number
。Jackson的序列化和java.lang.Number擴展的反序列化
import com.google.common.primitives;
public class UnsignedNumericClass {
private long data;
public UnsignedNumericClass(long data) {
this.data = data;
}
public UnsignedNumericClass(String data) {
this.data = UnsignedLongs.decode(data);
}
public UnsignedNumericClass() {}
public void setData(long data) {this.data = data;}
public long getData() {return data;}
public toString() {return UnsignedLongs.toString(data);}
public int intValue() {return (int) data;}
public long longValue() {return data;}
public float floatValue() {return data;}
public double doubleValue() {return data;}
}
這與傑克遜扮演得很好,但是第二我改變類閱讀
public class UnsignedNumericClass extends Number
傑克遜未能反序列化,聲稱「發現從數字值(14169630718280903901)反序列化沒有合適的創造者法」 。此外,它只是有時失敗。
有誰知道爲什麼會發生這種情況,或者如何讓傑克遜成功地反序列化到延伸java.lang.Number
的類的實例?