la Serialización es el proceso de convertir un objeto en una secuencia de bytes que se pueden almacenar en un disco o de la base de datos o puede ser enviado a través de los arroyos. El proceso inverso de crear un objeto a partir de una secuencia de bytes se llama deserialización.

una clase debe implementar una interfaz Serializable presente en el paquete java.io para serializar su objeto con éxito., Serializable es una interfaz de marcador que agrega un comportamiento serializable a la clase que lo implementa.

Java proporciona una API Serializable encapsulada bajo java.io paquete para serializar y deserializar objetos que incluyen,

  • java.io.serializable
  • java.io.Externalizable
  • ObjectInputStream
  • ObjectOutputStream

java marker interface

marker Interface es una interfaz especial en Java sin ningún campo y método., La interfaz Marker se usa para informar al compilador que la clase que la implementa tiene algún comportamiento o significado especial. Algunos ejemplo de interfaz de Marcador son,

  • java.io.serializable
  • java.lang.Cloneable
  • java.rmi.Remote
  • java.util.RandomAccess

Todas estas interfaces no tiene ningún método y el campo. Solo agregan un comportamiento especial a las clases que los implementan. Sin embargo, las interfaces de marcadores han sido obsoletas desde Java 5, fueron reemplazadas por Anotaciones., Las anotaciones se utilizan en lugar de la interfaz de marcador que desempeñan exactamente el mismo papel que las interfaces de marcador lo hacían antes.

para implementar serialización y deserialización, Java proporciona dos clases ObjectOutputStream y ObjectInputStream.

Clase ObjectOutputStream

se utiliza para escribir estados de objeto en el archivo. Un objeto que implementa la interfaz java.io.Serializable se puede escribir en strams. Proporciona varios métodos para realizar la serialización.

Clase ObjectInputStream

Un ObjectInputStream deserializa objetos y datos primitivos escritos usando un ObjectOutputStream.,

métodos writeObject() y readObject ()

la clase writeObject()método de ObjectOutputStream serializa un objeto y lo envía al flujo de salida.

public final void writeObject(object x) throws IOException

El readObject() método de ObjectInputStream referencias de clase de objeto de corriente y deserializar ella.

public final Object readObject() throws IOException,ClassNotFoundException

mientras se serializa si no desea que ningún campo sea parte del estado del objeto, declare que es estático o transitorio según su necesidad y no se incluirá durante el proceso de serialización de java.,

Ejemplo: Serializar un Objeto en Java

En este ejemplo, tenemos una clase que implementa la interfaz Serializable para hacer que su objeto serializado.

El objeto de la clase Studentinfo se serializa utilizando el método writeObject() y se escribe en el archivo student.txt.

ejemplo: deserialización del objeto en Java

para deserializar el objeto, estamos usando la clase ObjectInputStream que leerá el objeto desde el archivo especificado. Vea el siguiente ejemplo.,

Abhi104null

el campo de contacto es nulo porque, fue marcado como estático y como hemos discutido anteriormente, los campos estáticos no se serializan.

Nota: los miembros estáticos nunca se serializan porque están conectados a la clase no al objeto de la clase.

palabra clave transitoria

al serializar un objeto, si no queremos que cierto miembro de datos del objeto sea serializado, podemos mencionarlo transitorio. la palabra clave transitoria evitará que ese miembro de datos sea serializado.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • Hacer un miembro de datos transient evitará su serialización.
  • En este ejemplo rid no va a ser serializada porque es transitoria, y el contact también seguirán deserializada porque es estático.