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, ogcontact
vil også fortsat være unserialized fordi den er statisk.