Предположим, что у меня есть программа, которая по какой-то причине должна обрабатывать старые версии сериализованных объектов.
Например: при десериализации можно встретить одну из этих версий.
class Pet {
private static final long serialVersionUID = 1L;
int paws;
}
class Pet {
private static final long serialVersionUID = 2L;
long paws; // handle marsian centipedes
boolean sharpTeeth;
}
Предположим, что он (логически) можно преобразовать старый объект в новый объект, используя некоторую умную стратегию для установки нестерических полей и т.д., но:
Как упорядочить исходный код? Мне бы, вероятно, понадобились обе версии в одном исходном дереве при написании конвертера, но как мне обрабатывать это, например, в eclipse.
Должен ли я выполнять десериализацию в одном загрузчике классов, и если это не удается, попробуйте использовать другой загрузчик классов, который использует более старую версию (и так далее), или есть ли лучшие способы?
Какая лучшая стратегия?