Ответ 1
Да, вы можете. Серийные версии разных классов независимы и не мешают друг другу.
PS
Eclipse даже предлагает установить serialVersionID
значение по умолчанию 1L
.
class A implements Serializable{
private static final long serialVersionUID = 5L;
...
}
и
class B implements Serializable{
private static final long serialVersionUID = 6L;
...
}
то необходимо предоставить уникальный serialVersionUID
для обоих классов.
Итак, могу ли я назначить serialVersionUID = 5L
для обоих классов?
Я читаю следующие ссылки
Зачем генерировать длинный serialVersionUID вместо простого 1L?
Что такое serialVersionUID и почему я должен его использовать?
Да, вы можете. Серийные версии разных классов независимы и не мешают друг другу.
PS
Eclipse даже предлагает установить serialVersionID
значение по умолчанию 1L
.
serialVersionUID
необходим для запоминания версий класса. Он должен быть таким же, как при сериализации и десериализации. Это хорошая практика программирования для предоставления этой ценности, а не JVM, назначающей ее (как правило, это хеш). Для двух классов не обязательно иметь уникальные значения.
SerialVersionUUID - это идентификатор, используемый компилятором для сериализации/десериализации объекта. Этот идентификатор является частным членом класса.
Создание нового uuid для каждого сериализуемого хорошо иметь контроль над процессом сериализации/десериализации, но он НЕ обязательно должен быть уникальным среди разных классов.
serialVersionUID
может быть чем угодно.
Но лучше всего начинать с с наименьшего числа (например, 0L
) и обновлять его всякий раз, когда вы вносите изменения в класс, которые влияют на сериализацию, например, добавляя/обновляя/удаляя поле, в В этом случае вы должны увеличить номер версии с 0L
до 1L
и так далее.
Да, возможно, что два разных класса могут иметь одну и ту же переменную serialVersionUID. Но предпочитайте использовать уникальный для каждого класса. Также используйте от 8 до 10 цифр более длинный, а не только 1 как значение.