serialisering är en process för att konvertera ett objekt till en sekvens av byte som kan kvarstå till en disk eller Databas eller kan skickas via strömmar. Den omvända processen att skapa objekt från sekvens av byte kallas deserialisering.
en klass måste implementera Serialiserbart gränssnitt som finns ijava.io
– paketet för att serialisera objektet framgångsrikt., Serializable är ett markörgränssnitt som lägger serialiserbart beteende till klassen som implementerar den.
Java tillhandahåller Serialiserbara API inkapslade under java.io
paket för serialisering och deserialisering av objekt som inkluderar,
java.io.serializable
java.io.Externalizable
ObjectInputStream
ObjectOutputStream
Java marker interface
marker Interface är ett speciellt gränssnitt i Java utan fält och metod., Markörgränssnitt används för att informera kompilatorn om att den klass som implementerar den har något speciellt beteende eller mening. Några exempel på Markörgränssnitt är
java.io.serializable
java.lang.Cloneable
java.rmi.Remote
java.util.RandomAccess
alla dessa gränssnitt har ingen metod och har ingen fält. De lägger bara till speciellt beteende i klasserna som implementerar dem. Men markeringsgränssnitt har föråldrats sedan Java 5, de ersattes av anteckningar., Anteckningar används i stället för markör gränssnitt som spelar exakt samma roll som markör gränssnitt gjorde innan.
För att implementera serialisering och deserialisering tillhandahåller Java två klasser ObjectOutputStream och ObjectInputStream.
ObjectOutputStream class
det används för att skriva objekttillstånd till filen. Ett objekt som implementerar java.io.Gränssnittet Serializable kan skrivas till strams. Det ger olika metoder för att utföra serialisering.
ObjectInputStream class
ett ObjectInputStream deserialiserar objekt och primitiva data skrivna med en ObjectOutputStream.,
writeObject() och readObject() metoder
writeObject()
metod förObjectOutputStream
klass serialiserar ett objekt och skicka det till utdataströmmen.
public final void writeObject(object x) throws IOException
readObject()
metod förObjectInputStream
klassreferenser objekt ur strömmen och deserialisera det.
public final Object readObject() throws IOException,ClassNotFoundException
medan serialisering om du inte vill att något fält ska vara en del av objekttillståndet deklarerar du det antingen statiskt eller övergående baserat på ditt behov och det kommer inte att inkluderas under java-serialiseringsprocessen.,
exempel: Serialisera ett objekt i Java
i det här exemplet har vi en klass som implementerar Serialiserbart gränssnitt för att göra objektet serialiserat.
objekt av Studentinfo klass serialiseras medwriteObject()
metod och skriven tillstudent.txt
fil.
exempel : deserialisering av objekt i Java
för att deserialisera objektet använder vi ObjectInputStream-klassen som läser objektet från den angivna filen. Se exemplet nedan.,
Abhi104null
kontaktfältet är null eftersom det var markerat som statiskt och som vi har diskuterat tidigare statiska fält blir inte serialiserat.
OBS! statiska medlemmar serialiseras aldrig eftersom de är anslutna till klass inte objekt av klass.
transient Keyword
medan serialisera ett objekt, om vi inte vill att vissa datamedlem i objektet ska serialiseras kan vi nämna det övergående. transient sökord kommer att förhindra att datamedlemmen serialiseras.,
class studentinfo implements Serializable { String name; transient int rid; static String contact;}
- att skapa en datamedlem
transient
förhindrar dess serialisering. - i det här exemplet
rid
kommer inte att serialiseras eftersom det är övergående, ochcontact
kommer också att förbli osterialiserat eftersom det är statiskt.