Serialization este un proces de conversie a unui obiect într-o secvență de octeți care pot fi persistat pe un disc sau de baze de date sau pot fi trimise prin fluxuri. Procesul invers de creare a obiectului din secvența de octeți se numește deserializare.

o clasă trebuie să pună în aplicare Interfață Serializable prezent în java.io pachet pentru a serializa obiectul său cu succes., Serializable este o interfață marker care adaugă un comportament serializable la clasa de punere în aplicare ea.

Java oferă Serializable API încapsulate sub java.io pachet pentru serializarea și deserializing obiecte care includ,

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

Java Marker interfață

Markerul de Interfață este o interfață specială în Java fără orice domeniu și metodă., Interfața Marker este utilizată pentru a informa compilatorul că clasa de implementare are un comportament sau o semnificație specială. Un exemplu de Marcaj de interfață sunt,

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

Toate aceste interfețe nu are nici o metodă și domeniu. Ele adaugă doar un comportament special la clasele care le implementează. Cu toate acestea interfețele marker au fost depreciate de la Java 5, Acestea au fost înlocuite cu adnotări., Adnotările sunt utilizate în locul interfeței de marcare care joacă exact același rol ca și interfețele de marcare înainte.pentru a implementa serializarea și deserializarea, Java oferă două clase ObjectOutputStream și ObjectInputStream.

clasa ObjectOutputStream

este folosit pentru a scrie stări de obiect în fișier. Un obiect care implementează interfața java. io. Serializable poate fi scris la strams. Acesta oferă diferite metode pentru a efectua serializare.

clasa ObjectInputStream

Un ObjectInputStream deserializes obiecte și date primitive scrise folosind un ObjectOutputStream.,

writeObject() si readObject() Metode

writeObject() metoda de ObjectOutputStream clasa serializes un obiect si trimite-l la fluxul de ieșire.

public final void writeObject(object x) throws IOException

readObject() metoda de ObjectInputStream clasa referințe obiect de flux și deserialize.

public final Object readObject() throws IOException,ClassNotFoundException

în timp ce serializarea dacă nu doriți nici un câmp să facă parte din starea obiectului, atunci declarați-l fie static sau tranzitoriu în funcție de nevoia dvs. și nu va fi inclus în timpul procesului de serializare java.,

Exemplu: Serializarea unui Obiect în Java

În acest exemplu, avem o clasă care implementează interfața Serializable de a face obiect serializat.

Obiect de Studentinfo clasa este serializat folosind writeObject() metoda și scris student.txt fișier.

exemplu: deserializarea obiectului în Java

pentru a deserializa obiectul, folosim clasa ObjectInputStream care va citi obiectul din fișierul specificat. A se vedea exemplul de mai jos.,

Abhi104null

câmpul de Contact este nul,deoarece a fost marcat ca static și așa cum am discutat anterior câmpurile statice nu se serializează.

notă: membrii statici nu sunt serializate, deoarece acestea sunt conectate la clasa Nu obiect de clasă.

cuvânt cheie tranzitoriu

în timp ce serializarea unui obiect, dacă nu vrem anumite date membru al obiectului să fie serializate putem menționa tranzitoriu. cuvinte cheie tranzitorie va împiedica ca membru de date de a fi serializate.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • Face un membru de date transient va preveni de serializare.
  • În acest exemplu rid nu va fi serializat pentru că este tranzitorie, și contact va rămâne, de asemenea, unserialized pentru că este static.