переопределить serialVersionUID для системных классов - PullRequest
1 голос
/ 27 февраля 2012

Есть ли способ переопределить serialVersionUID системных классов java?

Пример ошибки: java.io.InvalidClassException: java.util.Date;несовместимый локальный класс: stream classdesc serialVersionUID = 7523895402267505689, локальный класс serialVersionUID = 7523967970034938905

Клиент и сервер имеют разные версии Java.Но поскольку я знаю, что классы одинаковы, я хочу использовать сериализацию.

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Вы не знаете , что классы одинаковы. Они могут быть одинаковыми, но если номер версии изменился, то все внутреннее могло измениться.

Вам нужно будет сериализовать ваши данные во что-то еще (например, в строку) и десериализовать их на другом конце.

0 голосов
/ 27 февраля 2012

Первый ответ на вопрос Q & A , найденный Питером Ньютоном, имеет многообещающий подход.По сути, пример кода перегружает метод, который читает дескрипторы класса из потока и настраивает идентификатор серийной версии.Если вы делаете это для нескольких классов, вам необходимо соответствующим образом скорректировать код.

Но учтите, что это довольно опасная вещь.Если переданное представление класса несовместимо, вы можете получить поврежденные объекты без предупреждения.

...