Изменит ли добавление метода, заполненную Java SerialVersionUid в моем классе?
-
14-09-2019 - |
Вопрос
Если у меня есть такой класс, как это:
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 и тот факт, что старый класс был удален до новой сборки.