Gerenciando várias versões de objetos Java serializados

Digamos que eu tenho um programa que, por algum motivo, precise lidar com versões antigas de objetos serializados.

Por exemplo: ao desserializar, uma dessas versões pode ser encontrada.

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;
}

Vamos supor que é (logicamente) possível converter um objeto antigo em um novo objeto usando alguma estratégia inteligente para definir campos inexistentes etc etc, mas:

Como organizo meu código fonte? Provavelmente, eu precisaria das duas versões na mesma árvore de origem ao escrever um conversor, mas como lidar com isso, digamos, no eclipse.

Devo fazer a desserialização em um carregador de classes e, se isso falhar, tente usar outro carregador de classes que use uma versão mais antiga (e assim por diante), ou existem maneiras melhores?

Qual é a melhor estratégia?

questionAnswers(4)

yourAnswerToTheQuestion