到
public class SerializableTest implements Serializable
{
/** field <code>serialVersionUID</code> */
private static final long serialVersionUID = 3214128409127377143L;
private String month;
private int someInt;
public String getMonth()
{
return month;
}
public void setMonth(String month)
{
this.month = month;
}
public int getSomeInt()
{
return someInt;
}
public void setSomeInt(int someInt)
{
this.someInt = someInt;
}
}
我有这个Serializable类,其中有一个名为month的String字段,当前包含一组固定的常量值 - “Jan”,“Feb”等...
我想重构该类以使用枚举而不是String:
public enum Month
{
JAN("Jan"),
FEB("Feb");
private final String value;
Month(String value)
{
this.value = value;
}
public String value() {
return value;
}
public static Month fromValue(String v) {
for (Month c: Month.values()) {
if (c.value.equals(v)) {
return c;
}
}
throw new IllegalArgumentException(v);
}
}
是否可以以兼容的方式执行此操作? 我怀疑我需要提供枚举月的自定义可序列化形式,但我不确定如何做到这一点。
答案 0 :(得分:1)
要向后兼容,您无法更改类型,但添加新字段。并在反序列化后更新新字段。
在迁移完所有数据后,您只需删除旧字段。