私はJacksonを使用して、java.lang.Number
を拡張するカスタム数値クラスを直列化および逆シリアル化しようとしています。以下は、Number
を拡張しないクラスのベアボーン実装です。ジャクソンの直列化と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
ジャクソンは主張していないデシリアライズに失敗した読み取りにクラスを変更しかし、第二の「Number値(14169630718280903901)からデシリアライズすることが見つかりませ適しクリエイター法」と非常によく果たしています。さらに、時には失敗するだけです。
これが起こっている理由、またはジャクソンをjava.lang.Number
のクラスのインスタンスに正常にデシリアライズする方法を知っている人はいますか?