La serializzazione è un processo di conversione di un oggetto in una sequenza di byte che può essere mantenuta su un disco o un database o può essere inviata tramite flussi. Il processo inverso di creazione dell’oggetto dalla sequenza di byte è chiamato deserializzazione.

Una classe deve implementare l’interfaccia serializzabile presente nel pacchettojava.io per serializzare correttamente il suo oggetto., Serializable è un’interfaccia marker che aggiunge un comportamento serializable alla classe che lo implementa.

Java fornisce Serializable API incapsulato sotto java.io pacchetto per la serializzazione e la deserializzazione degli oggetti che includono,

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

Java Marker interface

Marker Interface è un’interfaccia in Java senza campo e metodo., L’interfaccia marker viene utilizzata per informare il compilatore che la classe che la implementa ha un comportamento o un significato speciale. Qualche esempio di interfaccia dei marcatori sono,

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

Tutte queste interfacce non hanno alcun metodo e di campo. Aggiungono solo un comportamento speciale alle classi che li implementano. Tuttavia le interfacce marker sono state deprecate da Java 5, sono state sostituite da Annotazioni., Le annotazioni vengono utilizzate al posto dell’interfaccia Marker che svolge esattamente lo stesso ruolo delle interfacce marker.

Per implementare la serializzazione e la deserializzazione, Java fornisce due classi ObjectOutputStream e ObjectInputStream.

ObjectOutputStream class

Viene utilizzato per scrivere gli stati dell’oggetto nel file. Un oggetto che implementa l’interfaccia java.io.Serializable può essere scritto su strams. Fornisce vari metodi per eseguire la serializzazione.

Classe ObjectInputStream

Un ObjectInputStream deserializza oggetti e dati primitivi scritti utilizzando un ObjectOutputStream.,

writeObject() e readObject() Metodi

IlwriteObject() metodo diObjectOutputStream classe serializza un oggetto e inviarlo al flusso di output.

public final void writeObject(object x) throws IOException

IlreadObject()metodo diObjectInputStream riferimenti di classe oggetto fuori flusso e deserializzarlo.

public final Object readObject() throws IOException,ClassNotFoundException

durante la serializzazione se non si desidera che alcun campo faccia parte dello stato dell’oggetto, dichiararlo statico o transitorio in base alle proprie esigenze e non verrà incluso durante il processo di serializzazione java.,

Esempio: Serializzazione di un oggetto in Java

In questo esempio, abbiamo una classe che implementa l’interfaccia serializzabile per rendere il suo oggetto serializzato.

L’oggetto della classe Studentinfo viene serializzato utilizzando il metodowriteObject() e scritto nel filestudent.txt.

Esempio : Deserializzazione dell’oggetto in Java

Per deserializzare l’oggetto, stiamo usando la classe ObjectInputStream che leggerà l’oggetto dal file specificato. Vedi l’esempio seguente.,

Abhi104null

Il campo di contatto è nullo perché è stato contrassegnato come statico e,come abbiamo discusso in precedenza, i campi statici non vengono serializzati.

NOTA: i membri statici non vengono mai serializzati perché sono collegati a class non object of class.

Parola chiave transient

Mentre serializziamo un oggetto, se non vogliamo che determinati membri dei dati dell’oggetto siano serializzati, possiamo menzionarlo transient. la parola chiave transitoria impedirà che il membro dei dati venga serializzato.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • Creare un membro dati transient ne impedirà la serializzazione.
  • In questo esempioridnon verrà serializzato perché è transitorio, econtact rimarrà anche non serializzato perché è statico.