gpt4 book ai didi

java - 是否可以以兼容的方式更改可序列化类的某些字段的类型?

转载 作者:行者123 更新时间:2023-11-30 11:05:05 25 4
gpt4 key购买 nike

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 的字符串字段,当前包含一组固定的常量值 - “Jan”、“Feb”等......

我想重构这个类,让它有一个枚举常量而不是字符串:

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);
}
}

有没有可能以兼容的方式做到这一点?我怀疑我需要提供枚举月份的自定义可序列化形式,但我不确定该怎么做。

最佳答案

为了向后兼容,您不能更改类型,但可以添加新字段。并在反序列化后更新新字段。

在迁移所有数据后,您只需删除旧字段即可。

关于java - 是否可以以兼容的方式更改可序列化类的某些字段的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29770107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com