Ao usar serialVersionUID (1L) em vez de gerar serialVersionUID (3567653491060394677L), você está dizendo algo.
Você está dizendo que está 100% confiante de que nenhum sistema que jamais toque nessa classe que tenha uma versão serializada incompatível dessa classe com um número de versão 1.
Se você pode pensar em alguma desculpa para o histórico de versão serializado ser desconhecido, pode ser difícil dizer com confiança. Durante sua vida, uma classe de sucesso será mantida por muitas pessoas, viverá em muitos projetos e residirá em muitos sistemas.
Você pode sofrer por isso. Ou você pode jogar na loteria na esperança de perder. Se você gerar a versão, terá uma pequena chance de as coisas darem errado. Se você assumir "Ei, eu aposto que ninguém usou 1 ainda", suas chances são maiores que pequenas. É precisamente porque todos pensamos que 0 e 1 são legais que você tem maiores chances de atingi-los.
-
Ao gerar serialVersionUID (3567653491060394677L), em vez de usar serialVersionUID (1L), você está dizendo algo.
Você está dizendo que as pessoas podem ter criado ou gerado manualmente outros números de versão ao longo do histórico desta classe e você não se importa porque Longs está enlouquecendo grandes números.
De qualquer maneira, a menos que você conheça perfeitamente o histórico dos números de versão usados ao serializar a classe em todo o universo de onde ela existe ou que sempre existirá, você está arriscando. Se você tiver tempo para garantir 100% de certeza de que 1 é AOK, faça isso. Se isso der muito trabalho, vá em frente e gere o número cegamente. É mais provável que você ganhe na loteria do que errar. Se isso acontecer, me avise e eu comprarei uma cerveja para você.
Com toda essa conversa sobre jogar na loteria, posso ter lhe dado a impressão de que serialVersionUID é gerado aleatoriamente. De fato, desde que o intervalo de números seja distribuído uniformemente por todo valor possível de um Long, isso seria bom. No entanto, é realmente feito desta maneira:
http://docs.oracle.com/javase/6/docs/platform/serialization/spec/class.html#4100
A única diferença é que você não precisa de uma fonte aleatória. Você está usando as alterações na própria classe para alterar o resultado. Mas, de acordo com o princípio do buraco de pombo, ainda há uma chance de que possa dar errado e ter uma colisão. É incrivelmente improvável. Boa sorte em tirar uma cerveja de mim.
No entanto, mesmo que a classe viva apenas em um sistema e em uma base de código, pensando que incrementar o número manualmente oferece zero chances de colisões, apenas significa que você não entende humanos. :)