1
resposta

Como desserializar objetos de SerialVersionID anteriores?

Suponhamos que temos a mesma classe Cliente feita pelo professor (com nome, cpf e profissão) e foi atribuída a essa classe um serialVersionID= 1L. Foram serializados alguns objetos e depois disso foi feita uma alteração incompatível na classe Cliente, alterando o cpf de int para String e alterando também o serialVersionID para 2L (as mesmas alterações que o professor fez). Como houve uma mudança no serialVersionID, os objetos serializados anteriormente não conseguem ser desserializados, já que a classe Cliente com o serialVersionID= 1L não é mais localizada. Então como desserializamos esses caras das versões anteriores?

1 resposta

Você pode definir o serialVersionUID como qualquer valor necessário (os valores esperados vs reais são normalmente vistos nas mensagens de erro).

Para desserializar objetos é necessário colocar o campo como serialVersionUID com o ID da serialização, assim você poderá ler seus dados antigos.

Se você precisar ler o formato novo e o antigo ao mesmo tempo e eles forem realmente um pouco diferentes, parece melhor atribuir um novo nome à nova versão da classe.