Как получатель jvm, выполняющий десериализацию, узнает, какой идентификатор сериализации использовался при сериализации

#java #serialization #deserialization #objectoutputstream

Вопрос:

Как jvm-получатель, выполняющий десериализацию с использованием ObjectInputStream, узнает, какой идентификатор сериализации использовался при сериализации с использованием ObjectOutputStream. Учитывая, что отправитель и получатель присутствуют на 2 разных серверах.

Ответ №1:

Потому что при записи объекта в ObjectOutputStream логику сериализации записывается не только фактическое имя класса, но и serialVersionUid в выходной поток.

Поэтому ObjectInputStream (при десериализации) можно прочитать имя класса считываемого объекта, а также serialVersionUid название класса.