我想用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
的类的实例?