4

如果我有这样的课程:

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

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

4

3 回答 3

8

是的,它会改变serialVersionUID.

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

于 2009-06-15T23:25:01.940 回答
1

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

于 2009-06-15T23:32:54.620 回答
0

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

于 2009-06-16T03:54:41.263 回答