Serialisering er en proces med at konvertere et objekt til en sekvens af bytes, der kan være varet en disk eller database, eller kan sendes via vandløb. Den omvendte proces med at skabe objekt fra sekvens af bytes kaldes deserialisering.

en klasse skal implementere Serialiserbar grænseflade til stede i java.io pakke for at serialisere sit objekt med succes., Serialiableable er en markør interface, der tilføjer serialiizable adfærd til klassen gennemføre det.

Java giver Serializable API indkapslet under java.io pakke til fortløbende og deserializing objekter, som omfatter,

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

Java Markør interface

Marker Interface er et særligt interface i Java uden nogen felt og metode., Marker interface bruges til at informere compiler, at klassen gennemføre det har nogle særlige adfærd eller betydning. Nogle eksempler på Marker interface er,

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

Alle disse grænseflader ikke har nogen metode og felt. De tilføjer kun særlig adfærd til de klasser, der implementerer dem. Men markør grænseflader er blevet udskrevet siden Java 5, de blev erstattet af anmærkninger., Anmærkninger bruges i stedet for markør Interface, der spiller nøjagtig samme rolle som markør grænseflader gjorde før.for at gennemføre serialisering og deserialisering giver Java to klasser ObjectOutputStream og ObjectInputStream.

ObjectOutputStream class

det bruges til at skrive objekttilstande til filen. Et objekt, der implementerer java.io.Serialiableable interface kan skrives til strams. Det giver forskellige metoder til at udføre serialisering.

ObjectInputStream class

et ObjectInputStream deserialiserer objekter og primitive data skrevet ved hjælp af en ObjectOutputStream.,

writeObject() og readObject() Metoder

writeObject() metode til ObjectOutputStream class serializes et objekt, og sende det til output stream.

public final void writeObject(object x) throws IOException

readObject() metode til ObjectInputStream class referencer objekt ud af stream og deserialisere det.

public final Object readObject() throws IOException,ClassNotFoundException

mens serialisering, hvis du ikke ønsker, at noget felt skal være en del af objekttilstanden, erklærer du det enten statisk eller forbigående baseret på dit behov, og det vil ikke blive inkluderet under java-serialiseringsprocessen.,

Eksempel: Fortløbende et Objekt i Java

I dette eksempel, vi har en klasse, der implementerer Serializable-interfacet at gøre sit objekt føljeton.

Objekt af Studentinfo klasse er føljeton ved hjælp af writeObject() metode og skrevet til student.txt fil.

eksempel : deserialisering af objekt i Java

for at deserialisere objektet bruger vi ObjectInputStream klasse, der vil læse objektet fra den angivne fil. Se nedenstående eksempel.,

Abhi104null

kontaktfeltet er null,fordi det var markeret som statisk, og som vi tidligere har diskuteret, bliver statiske felter ikke føljeton.

Bemærk: statiske medlemmer er aldrig føljeton, fordi de er forbundet til klassen, der ikke er genstand for klassen.

forbigående nøgleord

mens vi serialiserer et objekt, kan vi nævne det forbigående, hvis vi ikke ønsker, at visse datamedlemmer af objektet skal serialiseres. forbigående søgeord vil forhindre, at data medlem fra at blive føljeton.,

class studentinfo implements Serializable { String name; transient int rid; static String contact;}
  • oprettelse af et datamedlem transient vil forhindre dens serialisering.
  • I dette eksempel: rid vil ikke blive serienummereret, fordi det er forbigående, og contact vil også fortsat være unserialized fordi den er statisk.