Сериализация, эволюция класса - PullRequest
1 голос
/ 20 октября 2011

Мне нужно сериализовать объект и сохранить его на диске.Я использовал встроенный Java, и это прекрасно работает, пока класс не сильно меняется.Если я начну дурачиться с классом, он может перестать работать.

Какие варианты доступны здесь?По сути, если у нас есть обновление, я не хочу разбивать все файлы данных пользователя.

До сих пор я пробовал сериализацию в XML (с такими же проблемами).Также попытался «вручную свернуть» файл конфигурации / данных.По сути, выкладывайте все в XML, загружайте его, а затем создайте НОВЫЙ объект на основе файла конфигурации.Кажется, это работает хорошо, но потребуется много времени, чтобы преобразовать все в это, так как это большая ручная работа.

Есть ли другие варианты?

Ответы [ 3 ]

1 голос
/ 20 октября 2011

Сначала вам необходимо внимательно прочитать раздел Версии спецификации сериализации объекта .

1 голос
/ 20 октября 2011
  1. protobuf (Очень хорошая поддержка для прямой и обратной совместимости, но вы должны написать свой собственный код отображения)
  2. MessagePack
  3. Apache Avro
  4. Kryo

И и многое другое со сравнениями здесь

0 голосов
/ 20 октября 2011

Я большой сторонник (выучив нелегкий путь) наличия постоянных прокси для моих сериализованных объектов.У эффективной Java есть целая глава, в которой рассказывается о способах их реализации.

Способ, которым я это делаю, - это использование внутреннего класса, который берет мой объект в своем конструкторе и соответственно устанавливает его внутренние поля.По мере развития вашего реального объекта вы либо добавляете новые поля в прокси, либо создаете совершенно новый прокси (оставляя старое на месте для обратной совместимости).

Подробнее см. в этой статье Информация.

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