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, șicontact
va rămâne, de asemenea, unserialized pentru că este static.