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 № 1Francamente, 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.
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".
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á.
execute serialver .. Isso lhe dará SerialID.
A passagem do nome da classe para este utilitário não inclui a extensão .class.