Alguém sabe pra quer serve a linha:
private static final long serialVersionUID = 1L;
encontro ela em alguns códigos e não sei pra que serve.
Alguém sabe pra quer serve a linha:
private static final long serialVersionUID = 1L;
encontro ela em alguns códigos e não sei pra que serve.
Bom, vou dizer o que eu sei agora sobre isso. Desde o java 1.5, o eclipse reclama que classes que são serializáveis devem especificar esse serialVersionUID.
Eu não fui à fundo, mas consigo entender pra que isso serve: no java, as classes são serializáveis. Isso significa que você consegue gravar o estado da classe java e mandar para algum lugar, por exemplo, para um arquivo, ou até para a internet. O J2EE utiliza isso adoidado…
Aí, como funciona essa serialização? O java pega os campos da sua classe e grava eles: Por exemplo, nessa classe:
class Agenda {
String nome;
String endereço;
String telefone;
}
Ele gravaria as strings do nome, do endereço e do telefone.
Mas, vamos supor que eu coloque um campo extra nessa classe: digamos, o CEP. Agora eu tenho duas versões rolando por aí, certo? Se eu gravei dados antigos, que não tinham o CEP, e for tentar lê-los de volta, o java pode reclamar “Opa! Cadê o telefone dessa classe?”
Aí que entra o serialVersionUID: Na versão 1, da minha classe:
class Agenda {
private long serialVersionUID = 1L;
String nome;
String endereço;
String telefone;
}
Aí mudei a versão:
class Agenda {
private long serialVersionUID = 2L;
String nome;
String endereço;
String telefone;
String cep;
}
E aí posso usar essa informação em rotinas de desserialização para saber se estou mexendo com classes antigas ou novas…
Para mais informações, puxei no google e cliquei no “estou com sorte”: http://blog.caelum.com.br/entendendo-o-serialversionuid/
obrigado pelas informações!!
Dá uma olhada nesse artigo que vai ajudar Entendendo SerialVersionUID em Java