java - the - private static final long serialversionuid
¿Qué es serialVersionUID en java, normalmente en la clase de excepción? (3)
Posible duplicado:
¿Por qué debería preocuparme por serialVersionUID?
Estoy revisando un código de manejo de excepciones y vi algo llamado serialVersionUID. ¿Para qué es este uid? ¿Se limita solo a la excepción o se puede usar en todas las clases? ¿Cuál es la ventaja de esta identificación?
Es para determinar si tienen compatibilidad serializable y deserializable si tienen el mismo serialVersionUID
y ambos implementables Serializable
entonces son compatibles.
Y no se limita a las excepciones, ya que notará que eclipse es propenso a poner un serialVersionUID
principio de su clase java normal si implementa Serializable
.
Editado: actualizado para incluir el comentario correcto de @Spychos sobre la interfaz Serializable
.
Se utiliza para la serialización, se debe declarar en cualquier clase que implemente Serializable
.
De hecho, es un número de versión que JVM puede usar para verificar si una clase serializada coincide con la definición de clase en la que está tratando de deserializarla.
Hay más información al respecto aquí: http://download.oracle.com/javase/1,5.0/docs/api/java/io/Serializable.html
serialVersionUID es un campo para definir la versión de una clase en particular mientras se serializa y deserializa. considere un escenario en el que tenga un Employee
clase que tiene 3 campos que han estado en producción durante algún tiempo (lo que significa que pueden existir muchas versiones serializadas de objetos de empleado) ), cuando actualiza la clase para incluir (por ejemplo, un 4to campo), toda la clase anterior (que se serializa) no se puede convertir o deserializar en la nueva y obtendrá una excepción.
para evitar este problema, puede usar el campo serialVersionUID
para decirle a JVM que la nueva clase es infact de una versión diferente (cambiando el serialVersionUID).
@Farmor y @Tom Jefferys dijeron casi lo mismo, pero con un ejemplo, las cosas parecen mucho más simples.