/ / ¿Cómo determinar una ID de versión de serie adecuada? - java, serialización

¿Cómo determinar una ID de versión de serie adecuada? - java, serialización

¿Cómo determinar una ID de versión de serie adecuada? ¿Debería ser un valor grande y largo usando algunos generadores o cualquier número entero que sea suficiente?

Respuestas

5 para la respuesta № 1

Francamente, siempre y cuando la serialVersionUID difiere entre las diferentes versiones de su clase, eso es todo lo que importa.

Lo que sería malo es si hay dos versiones de la misma clase con diferentes campos serializables que tengan la misma serialVersionUID - eso probablemente va a causar un problema al realizar la serialización.

Además, si los cambios en la clase no afectarán la serialización (por ejemplo, los campos serializables en la clase siguen siendo los mismos), entonces la serialVersionUID Puede seguir siendo el mismo.

Los IDE como Eclipse generarán automáticamente un ID para las clases que implementan Serializable basado en los campos y otra información relacionada con la clase, por lo que puede ser la ruta más fácil para generar una ID única.

Para leer más sobre el tema, la Descubre los secretos de la API de serialización de Java. Sería una buena lectura. Hay una sección llamada "Control de versión" que discute la serialVersionUID problema.


2 para la respuesta № 2

Posibles usos:

  • versión: incrementarla cuando la clase cambia de una manera incompatible;
  • marca de hora: configúrela en la marca de hora actual, p. ej. 200906121213 Cuando la clase cambia de una manera incompatible.

1 para la respuesta № 3

La herramienta serialver viene con Java de Sun.Kit de desarrollo (JDK). Toma un nombre de clase completo en la línea de comandos y devuelve el ID de la versión de serie para esa clase compilada, o se puede ejecutar con el parámetro "-show" para iniciar una pequeña GUI interactiva.

Así que si tu clase es Foo, corre

serialver Foo

y obtendrás algún tipo de salida como esta:

Foo: static final long serialVersionUID = -6618469841127325812L;

Tome el código que comienza con "estático" y colóquelo dentro de su clase con otras variables estáticas. Ahora el ID de la versión en serie está bloqueado en la clase.


1 para la respuesta № 4

iniciar indicador de comando

escriba a continuación:

discos compactos

luego escribe abajo

[serialver] [espacio] -classpath [espacio] [ruta de acceso de su archivo de clase] [espacio] [nombre de archivo de clase]

p.ej.

serialver -classpath C: UsersnileshjadavDocumentsjavafile_io ByteStreamDemo

por favor no agregue una extensión como ByteStreamDemo.java o ByteStreamDemo.class simplemente se usa solo ByteStreamDemo


-1 para la respuesta № 5

Agregando a la respuesta algunas cosas para tener cuidado antes de generar serialVersionUID usando la utilidad java serialver.

  1. La ruta JDK hasta bin se establece en las variables de entorno. De lo contrario, puede que "" serialver "no se reconozca como un comando interno o externo".

  2. Agregue la ruta de clase donde se encuentra su archivo de clase o vaya al directorio donde está su archivo de clase.

  3. ejecute serialver .. Esto le dará SerialID.

  4. El paso de nombre de clase a esta utilidad no incluye la extensión .class.