Foros del Web » Programación para mayores de 30 ;) » Java »

Quitar este warning

Estas en el tema de Quitar este warning en el foro de Java en Foros del Web. Hola, Estoy implementando una clase que implementa la interfaz Serializable y me sale este warning: The serializable class Clase does not declare a static final ...
  #1 (permalink)  
Antiguo 07/11/2011, 07:06
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Quitar este warning

Hola,

Estoy implementando una clase que implementa la interfaz Serializable y me sale este warning:

The serializable class Clase does not declare a static final serialVersionUID field of type long

¿Cómo lo puedo quitar?
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows
  #2 (permalink)  
Antiguo 07/11/2011, 07:36
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Quitar este warning

Agrega lo siguiente a tu clase:

Código Javascript:
Ver original
  1. public class TuClase implements Serializable {
  2.   private static final long serialVersionUID = 1L;
  3.  
  4.   /**
  5.    * demas metodos
  6.    */
  7. }

Mas informacion del porque aqui:
http://download.oracle.com/javase/1,...ializable.html
  #3 (permalink)  
Antiguo 07/11/2011, 08:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Quitar este warning

Gracias, pero, ¿para qué vale?
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows
  #4 (permalink)  
Antiguo 07/11/2011, 08:20
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Quitar este warning

Como yo lo entiendo:
El serialVersionUID sirve para que el JVM sepa si el objeto que se esta deserializando tiene la misma versión del objeto actual.
Esto es, por si serializaste un objeto y luego le hiciste un cambio a la clase. Esto traeria problemas al deserializar el objeto y puede corromper los datos.

Aunque raramente es usado.

Cita:
The serialization runtime associates with each serializable class a version number, called a serialVersionUID, which is used during deserialization to verify that the sender and receiver of a serialized object have loaded classes for that object that are compatible with respect to serialization. If the receiver has loaded a class for the object that has a different serialVersionUID than that of the corresponding sender's class, then deserialization will result in an InvalidClassException. A serializable class can declare its own serialVersionUID explicitly by declaring a field named "serialVersionUID" that must be static, final, and of type long:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;

If a serializable class does not explicitly declare a serialVersionUID, then the serialization runtime will calculate a default serialVersionUID value for that class based on various aspects of the class, as described in the Java(TM) Object Serialization Specification. However, it is strongly recommended that all serializable classes explicitly declare serialVersionUID values, since the default serialVersionUID computation is highly sensitive to class details that may vary depending on compiler implementations, and can thus result in unexpected InvalidClassExceptions during deserialization. Therefore, to guarantee a consistent serialVersionUID value across different java compiler implementations, a serializable class must declare an explicit serialVersionUID value. It is also strongly advised that explicit serialVersionUID declarations use the private modifier where possible, since such declarations apply only to the immediately declaring class--serialVersionUID fields are not useful as inherited members.
  #5 (permalink)  
Antiguo 07/11/2011, 08:26
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Quitar este warning

Perfecto, muchas gracias.
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows

Etiquetas: warning
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:24.