【发布时间】:2014-12-21 15:23:42
【问题描述】:
序列化时我有课
public class Name implements Serializable {
private final String firstName;
private final String lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
}
但是,在反序列化时,我有一个额外的方法(如下所述),它不会以任何方式影响对象状态,而序列化就是存储对象状态,那么为什么额外的方法对 serialversionuid 的哈希生成有贡献。在当前情况下,它将因 InvalidClassException 而失败。但是这个额外的方法并没有改变对象的状态。
public String getFullName() {
return firstName + " " + lastName;
}
【问题讨论】:
-
好问题,但不幸的是,事情就是这样。在我看来,即使在 1997 年,当时还没有充分考虑到这一点。一如既往的解决方案是提供您自己的
serialVersionUID. -
感谢EJB,好像不是刻意做的,我没发现这有什么意义。
标签: java serialization serialversionuid