Как я могу узнать serialVersionUID сериализованного объекта Java?

У меня есть несколько сериализуемых классов, которые были скомпилированы без указания serialVersionUID. Теперь мне нужно добавить некоторые члены данных к этим классам, но вы хотите сохранить некоторые уже сериализованные объекты.

Есть ли в любом случае, чтобы узнать serialVersionUID этих сериализованных объектов, чтобы я мог указать один и тот же идентификатор в исходном коде?

Ответы

Ответ 1

Если вы еще не модифицировали код, вы, вероятно, можете запустить инструмент serialver (часть JDK) и посмотреть, что он генерирует. Я верю, что вы получите то, что рассчитано seriVersionUID.

Вот краткая статья о serialver.

Ответ 2

Что я обычно делаю, я компилирую код, пытаюсь запустить его, а поднятое исключение упоминает оскорбительный SVUID, поэтому я могу вырезать и вставить его в свой собственный код. Сырой, но он работает.

Ответ 3

Если вы используете Eclipse, у него есть "быстрое исправление", чтобы сгенерировать рассчитанный serialVersionUID. Это, конечно, работает только в том случае, если у вас есть (точный) источник для классов во время сериализации объектов.

Если у вас есть хотя бы файлы классов для них, используйте инструмент командной строки "serialver" (поставляется с JDK).