java序列化,serialVersionUID和类版本

时间:2014-01-12 10:13:41

标签: java serialization

这是关于java序列化的一般问题。

我有一些Person.java类,带有2个字符串字段 - name,lastName:

public class Person implements Serializable {

    private static final long serialVersionUID = -460531025539746041L;

    private String name;
    private String lastName;

    public String getName() {
    return name;
    }

    public String getLastName() {
    return lastName;
    }

    public void setName(String name) {
    this.name = name;
    }

    public void setLastName(String lastName) {
    this.lastName = lastName;
    }

}

我正在使用一些序列化程序序列化这个类,比方说this one。 我正在通过网络将序列化数据发送到另一台服务器,然后使用相同的序列化器在目标服务器中进行反序列化,到目前为止一直很好。

现在假设Person类已被更改(添加了一个新字段)。 为了让数据完全通过,是否需要从我的结尾(版本明智或任何其他方面)进行任何调整?

1 个答案:

答案 0 :(得分:1)

  

现在假设Person类已被更改(添加了一个新字段)。为了让数据完全通过,是否需要从我的结尾(版本明智或任何其他方面)进行任何调整?

没有。添加字段是良性的,还有很多其他可能的更改。请参阅Versioning of Serialized Objects chapter of the Object Serialization Specification。也不要更改serialVersionUID

关于这个话题有很多错误的信息和很多误解,其中一些似乎就在这个主题中。不要相信任何不符合规范的内容。