我有这个旧的方便类来操作日期(yyyy-MM-dd)。它抽象了一些使用的丑陋,java.util.Date
但Calendar
我想用 JodaTime 重写它LocalDate
。(我不会改变接口,现在只是实现。)
旧版本使用默认序列化,并且只有一个int
字段。
如何final int
用 a 替换该字段final LocalDate
但保留序列化兼容性?
我可以实现writeObject
写出兼容int
值而不是LocalDate
. 但我不相信readObject
或readResolve
允许我int
从流中读取并写入LocalDate
,而不诉诸反射。
有没有类似静态readInstantiate
方法的东西?或者用序列化代理做这件事的聪明方法,仍然保持兼容性?
当前代码:
public final class MyDay implements Serializable {
private static final long serialVersionUID = 12345L;
private final int isoDate;
public MyDay(int isoDate) {
this.isoDate = isoDate;
}
// lots of convenience methods for manipulating dates
// no read/writeObject serialization methods in original
}