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, och contact kommer också att förbli osterialiserat eftersom det är statiskt.