添加方法会改变我的类中的java计算的serialVersionUid吗?

时间:2009-06-15 23:17:46

标签: java serialization serializable serialversionuid

如果我有这样的课程:

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

或者,是否有一个很好的工具来解决这个问题?

3 个答案:

答案 0 :(得分:8)

是的,它会更改serialVersionUID

您可以使用serialver命令行工具 - 至少在Sun的JDK中计算给定编译类的serialVersionUID

答案 1 :(得分:1)

是的,它会改变。一种简单的方法是Eclipse:如果类实现Serializable并且您没有提供serialVersionUID字段,则IDE将显示警告符号。您可以单击警告标志,然后选择“添加生成的串行版本UID”。这将为您计算serialVersionUID并将其插入您的代码中。

答案 2 :(得分:0)

当我开始测试我的bean时,在我看来,当类编译时,serialVersionUID被重新生成,而不仅仅是当它的签名改变时。原因可能是maven构建以及旧类在新构建之前被删除的事实。