Изменит ли добавление метода, заполненную Java SerialVersionUid в моем классе?

StackOverflow https://stackoverflow.com/questions/998925

Вопрос

Если у меня есть такой класс, как это:

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's JDK для расчета serialVersionUID для данного скомпилированного класса.

Другие советы

Да, это изменится. Простой способ - затмение: если класс реализует сериализуемые, и вы не предоставляете поле SerialVersionUid, IDE отображает символ предупреждения. Вы можете нажать на предупреждающий знак и выбрать «Добавить сгенерированную серийную версию UID». Это рассчитывает для вас SerialVersionUid и вставит его в свой код.

Когда я начал тестировать свои бобы, мне показалось, что SerialVersionUid был восстановлен, когда был класс составлено, не только когда его подпись изменилась. Причиной этого может быть сборка Maven и тот факт, что старый класс был удален до новой сборки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top