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 serializar en java?

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 ObjectOutputStreamByteArrayOutputStream, leemos el objeto lo escribimos en un array de bytes y lo obtenemos como objeto resultante.


¿Como serializar en java?

¿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 ByteArrayOutputStreamObjectOutputStream, debemos usar ByteArrayInputStreamObjectInputStream.

¿Como deserializar en java?


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? 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: 5

5 comentarios:

  1. No 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.

    ResponderEliminar
    Respuestas
    1. Hola amigo, espero solucionarte tus preguntas con esto!
      Para 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).

      Eliminar
  2. 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:

    String 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

    ResponderEliminar

Con la tecnología de Blogger.