如果我有这样的课:

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

另外,还有一个很好的工具可以解决这个问题吗?

有帮助吗?

解决方案

是的,它将改变 serialVersionUID.

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

其他提示

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

当我开始测试豆子时 编译, ,不仅当它的签名更改时。这样做的原因可能是Maven的构建,以及在新构建之前删除了旧类的事实。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top