JavaPlayer - ¿Que es serializar en java? ¿Para que sirve serializar? - ¿Que es el serialVersionUID? - ¿Como serializar en java? - ¿Como deserializar en java? - ¿Serializable warning en el eclipse?
Hola hoy vamos a ver el famosa interface serializable, que es el serialVersionUID.
¿Que es serializar en java? ¿Para que sirve serializar?
Básicamente serializar es pasar un Objeto a un array de bytes y viceversa. Sirve para poder trasmitir y escribir objetos a medios externos como webservices, archivos.
¿Que es el serialVersionUID?
El serialVersionUID es el id único que identifica una clase cuando lo serializamos, por lo cual en muchos entornos como el eclipse nos proponen un random serialVersionUID. Esto sumamente importante ya que mediante este id podemos identificar el objeto convertido en un array de bytes.
¿Como serializar en java?
Para serializar, la clase que deseamos serializar debe implementar la interface Serializable.
En nuestro ejemplo utilizaremos la clase Perro. La interfaz Serializable marca los objetos de la clase Perro al tiempo de ejecución como serializable (a Modo de flag para que se puede transformar en un array de bytes y viceversa). Cada subclase de Perro también se marcará como serializable. Cualquier atributo de un objeto que no sea serializable causará que el tiempo de ejecución Java arroje una excepción NotSerializableException . Puedes gestionar esto al usar la palabra clave transient para comunicarle al tiempo de ejecución que no intente serializar ciertos atributos. En ese caso, uno es responsable de asegurarse de que los atributos se restauren para que su objeto funcione adecuadamente.
Como se puede ver en la firma de la clase
pubic class Perro implements Serializable
Una ves obtenida la clase la cual vamos a serializar debemos instanciarla, luego utilizando las clases ObjectOutputStream y ByteArrayOutputStream, leemos el objeto lo escribimos en un array de bytes y lo obtenemos como objeto resultante.
¿Como deserializar en java?
Es básicamente serializar pero a la inversa, una vez que se obtiene la serializacion del objeto se debe deserializar. En vez de utilizar ByteArrayOutputStream y ObjectOutputStream, debemos usar ByteArrayInputStream y ObjectInputStream.
Hay que tener en cuenta que ahora el método readObject puede llegar a lanzar una nueva excepción llamada ClassNotFoundException.
¿Serializable warning en el eclipse?
Algunos entornos de desarrollo, como eclipse, lanzar un warning si una clase que implementa Serializable (o hereda de una clase que a su vez implementa Serializable) no tiene definido este campo. Es más, puede generarlo automáticamente, número incluido, si se lo pedimos. En eclipse basta con hacer click con el ratón sobre el símbolo de warning para que nos de las posibles soluciones al warning. Yo utilizo generated por que el default del eclipse agrega todos con 1L, el cual no me sirve.Saludos
JavaPlayer - ¿Que es serializar en java? ¿Para que sirve serializar? - ¿Que es el serialVersionUID? - ¿Como serializar en java? - ¿Como deserializar en java? - ¿Serializable warning en el eclipse?
Reviewed by El lado oscuro de java
on
diciembre 10, 2013
Rating:
Muy bueno che!!!
ResponderEliminarGracias Gabriel!
ResponderEliminarNo me queda claro la verdad, pues se supone que una interfaz solo define la estructura de una clase desde los metodos que esta debe tener, no entiendo como implementar una interfaz sirve para que el objeto sea serializable, incluso ni siquiera se implementa ningun metodo de Serializable, es extraño, no entiendo, no me queda claro.
ResponderEliminarHola amigo, espero solucionarte tus preguntas con esto!
EliminarPara que
un objeto sea serializable, debe implementar la interfaz java.io.Serializable. Esta interfaz no
define ningún método. Simplemente se usa para 'marcar' aquellas clases cuyas instancias
pueden ser convertidas a secuencias de bytes (y posteriormente reconstruídas).
Hola, está muy bueno el artículo, pero no logro poder asociarlo a como resolver un ejercicio especifico que me han asignado. Tengo este código:
ResponderEliminarString xml = //Aqui va el cuerpo del xml q no me sale bien en el comentario
pero la esencia es q me dan una etiqueta entry id=numero del id, y dentro otra etiqueta message que es la que contiene el texto que debo encontrar para retornar los id, algo asi mas o menos tuve q arreglarlo para q me saliera en el comentario:
entry id=1
message Application started /message
/entry
entry id=2
message Application ended /message
/entry
Collection ids = getIdsByMessage(xml, "Application ended");
yo tengo que implementar el metodo "getIdsByMessage", para q dado el string, que es el cuerpo del xml, yo retornar todos los id de los mensajes "Application ended"...con este ejemplo solo mostraria el "2".
Por fa ayudame explicandome cómo podria hacerle. Gracias