Сериализация: процесс создания SerialVersion UID - PullRequest
0 голосов
/ 26 марта 2020

Если мы передаем состояние объекта с компьютера A на компьютер B, то успешная сериализация / десериализация будет работать только в том случае, если обе машины имеют одинаковый UID SerialVersion класса, которому принадлежит переданный объект.

Я хочу знать, если генерация UID последовательной версии выполняется JVM, то как мне убедиться, что он будет одинаковым на обоих компьютерах A и B, прежде чем начинать процесс сериализации?

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Вопрос задается в документации по сериализации Java, короткий ответ. Настоятельно рекомендуется объявить собственный серийный номер JVM типа long stati c и final, если сериализуемый класс явно не объявляет serialVersionUID затем среда выполнения сериализации вычислит значение serialVersionUID по умолчанию для этого класса на основе различных аспектов класса.

JVM выполняет проверку и гарантирует, что ваш сериализованный объект имеет тот же UID, что и при десериализации .

1 голос
/ 26 марта 2020

Во-первых, не использовать Java Сериализация . Единственный красный выделенный текст в Правилах безопасного кодирования для Java SE читает

Примечание: десериализация ненадежных данных по своей природе опасна и ее следует избегать.

Чтобы убедиться, что идентификатор совпадает, определите serialVersionUID в классе.

@Serial private static final long serialVersionUID = 1L;

(@Serial начиная с текущей версии Java, Java SE 14.)

Чтобы найти идентификатор, сначала ищется serialVersionUID, а если его нет, он рассчитывается, как указано в документе (ха sh из открытых и c методов и полей класса) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...