/ / Como determinar um ID de versão serial adequado? - java, serialização

Como determinar um ID de versão serial apropriado? - java, serialização

Como determinar um ID de versão serial adequado? Deve ser qualquer grande valor longo usando alguns geradores ou qualquer inteiro será suficiente?

Respostas:

5 para resposta № 1

Francamente, enquanto o serialVersionUID difere entre as diferentes versões de sua classe, isso é tudo que importa.

O que seria ruim se houvesse duas versões da mesma classe com diferentes campos serializáveis ​​tendo o mesmo serialVersionUID - isso provavelmente causará um problema ao executar a serialização.

Além disso, se as mudanças na classe não afetarem a serialização (por exemplo, campos serializáveis ​​na classe permanecem os mesmos), então o serialVersionUID pode permanecer o mesmo.

IDEs como o Eclipse irão gerar automaticamente um ID para classes que implementam Serializable com base nos campos e outras informações sobre a classe, de modo que pode ser o caminho mais fácil para gerar um ID exclusivo.

Para mais leituras sobre o assunto, o Descubra os segredos da API de serialização Java seria uma boa leitura. Há uma seção chamada "Controle de versão" que discute o serialVersionUID questão.


2 para resposta № 2

Usos possíveis:

  • versão - incrementa quando a classe muda de forma incompatível;
  • carimbo de data / hora - defina-o com o carimbo de data / hora atual - por exemplo, 200906121213 quando a classe muda de forma incompatível.

1 para resposta № 3

A ferramenta serialver vem com o Java da SunKit de desenvolvimento (JDK). Ele recebe um nome de classe completo na linha de comando e retorna o ID da versão serial para essa classe compilada ou pode ser executado com o parâmetro "-show" para iniciar uma pequena GUI interativa.

Então, se sua classe é Foo, execute

serialver Foo

e você obterá algum tipo de resultado como este:

Foo: static final long serialVersionUID = -6618469841127325812L;

Pegue o código que começa com "estático" e coloque-o dentro de sua classe com outras variáveis ​​estáticas. Agora, o ID da versão serial está bloqueado na classe.


1 para resposta № 4

iniciar prompt de comando

digite abaixo:

CD

então digite abaixo

[serialver] [espaço] -classpath [espaço] [caminho do seu arquivo de classe] [espaço] [nome do arquivo de classe]

por exemplo.

serialver -classpath C: UsersnileshjadavDocumentsjavafile_io ByteStreamDemo

por favor, não adicione extensões como ByteStreamDemo.java ou ByteStreamDemo.class simplesmente usado apenas ByteStreamDemo


-1 para resposta № 5

Adicionando à resposta algumas coisas para ter cuidado antes de gerar serialVersionUID usando o utilitário java serialver.

  1. Caminho JDK até o compartimento a ser definido nas variáveis ​​de ambiente. Caso contrário, você pode obter "" serialver "não é reconhecido como um comando interno ou externo".

  2. Adicione o caminho da classe onde seu arquivo de classe está localizado ou vá para o diretório onde seu arquivo de classe está lá.

  3. execute serialver .. Isso lhe dará SerialID.

  4. A passagem do nome da classe para este utilitário não inclui a extensão .class.