O que é serialVersionUID?

8 respostas
F

Olá GUJ :smiley:
Começei a usar o Eclipse 3.1 RC2 e na maioria das classes que eu fiz aparece esse warning:

The serializable class CadastroAluno does not declare a static final serialVersionUID field of type
long

O que é e pra que serve?

8 Respostas

T

http://www.javapractices.com/Topic45.cjp tem um artigo muito bom sobre a importância de definir serialVersionUID. O artigo infelizmente não diz que esse ID, de preferência, deve ser único para cada classe (ou seja, use o gerador de UIDs que vem no Eclipse).

M

Serve para vc manter controle da evolução de seus objetos serialidos…

Exemplo:
Vc salva um objeto em um arquivo… meses depois vc tem que adicionar um método e ou atributo na sua classe. Quando vc tenta deserializar o objeto que vc salvou, vc naum consegue mais. Se vc manter o serialVersionUID este erro naum ocorre e vc consegue deserializar objetos que foram modificados…

L

mas pq esse precisaria usar isso c/ um JFrame por exemplo? :?:

P

Oi,

Qualquer classe Serializável devria ter esse valor (porque se ela é serializavel, ela deveria ser serializada me algum momento :wink: ), por isso o eclipse te pentelha com o warning. Cabe a você saber quando ignorar ou não.

G

toda classe serializavel possui um serialversionuid. duas opcoes:

  • a virtual machine gera um para voce
  • voce seta o seu (atraves do serialVersionUID)

se voce quer ter controle da serializacao e se preocupa com controle de versoes de suas classes serializaveis tera que entender direito como ele funciona, porque e correr atras de manter suas versoes da mesma classe compativeis (ou nao)

se voce nao quer tere controle de serializacao (como o caso do JFrame teu) simplesmente adiciona um supresswarnings (baixa o eclipse 3.1 final e da CTRL+1 que ele adiciona para voce)

thingol, se nao me engano, a regra do serialVersionUid nao diz nada sobre classes diferentes.
somente que a mesma classe em versoes incompativeis deve ter serialVersionUid diferentes.

J

esse tópico é antigo, estou ressucitando-o pelo fato de ainda não ter entendi muito a função de um serialVersionUID e com qual valor devo setá-lo.

[ ]

P

E eu vou tomar a liberdade de ressucitar isso aqui, porque fiz esse post porque cai nesse topico!

Segue o post
http://blog.caelum.com.br/2008/04/01/entendendo-o-serialversionuid/

R

Vou tomar a liberdade de cavar o tópico pq pesquisando sobre o mesmo assunto eu cai aqui pelo google e achei um artigo que pode ajudar quem tenha a mesma dúvida

Entendendo SerialVersionUID em Java

Criado 20 de junho de 2005
Ultima resposta 4 de set. de 2013
Respostas 8
Participantes 9