如果我有这样的课程:
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会改变吗?
例如,添加方法:
public String getFullName() {
return firstName + " " + lastName;
}
或者,是否有一个很好的工具来解决这个问题?
答案 0 :(得分:8)
是的,它会更改serialVersionUID
。
您可以使用serialver
命令行工具 - 至少在Sun的JDK中计算给定编译类的serialVersionUID
。
答案 1 :(得分:1)
是的,它会改变。一种简单的方法是Eclipse:如果类实现Serializable并且您没有提供serialVersionUID字段,则IDE将显示警告符号。您可以单击警告标志,然后选择“添加生成的串行版本UID”。这将为您计算serialVersionUID并将其插入您的代码中。
答案 2 :(得分:0)
当我开始测试我的bean时,在我看来,当类编译时,serialVersionUID被重新生成,而不仅仅是当它的签名改变时。原因可能是maven构建以及旧类在新构建之前被删除的事实。