Serialisering er en mekanisme for å konvertere tilstanden til et objekt inn i en byte-strøm. Deserialisering er det omvendt prosess hvor byte-strøm som brukes til å gjenskape den faktiske Java-objekt i minnet. Denne mekanismen brukes til å vedvare objektet.
byte stream laget er uavhengig av plattform. Så, objektet som føljetong på en plattform kan være deserialized på en annen plattform.,
for Å lage et Java-objekt serialiserbare vi implementere java.io.Serialiserbare grensesnitt.
ObjectOutputStream klasse inneholder writeObject () – metoden for serializing et Objekt.
public final void writeObject(Object obj) throws IOException
ObjectInputStream klasse inneholder readObject () – metoden for deserializing et objekt.
public final Object readObject() throws IOException, ClassNotFoundException
Fordeler av Bedriften
– 1. For å lagre/vedvare tilstanden til et objekt.
2. Å reise til et objekt i et nettverk.
Bare objekter av disse klassene kan være serialisert som er implementering av java.io.Serialiserbare grensesnitt.,
Serialiserbare er en markør interface (har ingen data medlem og metode). Den brukes til å «merke» java-klasser, slik at objekter av disse klassene kan få visse evne. Andre eksempler på markør-grensesnitt er:- Cloneable og Eksternt.
Punkter å huske
– 1. Hvis en forelder klasse har implementert Serialiserbare grensesnitt så barnet klassen trenger ikke å gjennomføre det, men omvendt er ikke sant.
2. Bare ikke-statiske data medlemmer er lagret via Serialisering prosessen.
3. Statiske data medlemmer og forbigående data medlemmer er ikke lagret via Serialisering prosessen.,Så, hvis du ikke ønsker å lagre verdien av en ikke-statiske data medlem da gjøre det forbigående.
4. Constructor av objektet aldri kalles når et objekt er deserialized.
5. Forbundet objekter må være å implementere Serialiserbare grensesnitt.
Eksempel :
class A implements Serializable{// B also implements Serializable// interface.B ob=new B(); }
SerialVersionUID
Serialisering runtime tilordner en versjon nummer med hvert Serialiserbare klasse kalt en SerialVersionUID, som brukes under Deserialisering til å bekrefte at avsender og mottaker av en føljetong objekt har lagt klasser for det objektet som er kompatible med hensyn til bedriften., Hvis mottaker har lastet ned en klasse for objektet som har annen VÆSKE enn tilsvarende avsenderens klasse, Deserialisering vil resultere i en InvalidClassException. En Serialiserbare klasse kan erklære sin egen UID eksplisitt ved å erklære et feltnavn.
Det må være statiske, endelige og av typen lenge.
jeg.,e – ALL-ACCESS-MODIFIER static final lang serialVersionUID=42L;
Hvis en serialiserbare klasse ikke uttrykkelig erklærer en serialVersionUID, så serialisering runtime vil beregne en standard som klasse basert på ulike aspekter av klasse, som beskrevet i Java-Objekt Serialisering Spesifikasjon. Imidlertid er det sterkt anbefalt at alle serialiserbare klasser uttrykkelig erklærer serialVersionUID verdi, siden beregning er svært sensitive til klasse detaljer som kan variere avhengig av kompilatoren implementeringer, noen endring i klassen eller ved hjelp av ulike id kan påvirke serialisert data.,
Det er også anbefalt å bruke private modifikator for VÆSKE, siden det er ikke nyttig som arvet medlem.
serialver
serialver er et verktøy som kommer med JDK. Det er brukt for å få serialVersionUID nummer for Java-klasser.,
Du kan kjøre følgende kommando for å få serialVersionUID
serialver
Eksempel 1:
– >
Output :
Object has been serializedObject has been deserialized a = 1b = geeksforgeeks
Eksempel 2:
– >
Output:
Object has been serializedData before Deserialization.name = abage = 20a = 2b = 1000Object has been deserializedData after Deserialization.name = abage = 20a = 0b = 2000
Beskrivelse for Utgang:
Du har sett mens deserializing objektet verdiene for a og b har endret seg. Årsaken er at en var merket som forbigående og b var statisk.,
I tilfelle av forbigående variabler:- En variabel som er definert med forbigående søkeord er ikke serialisert i løpet av bedriften prosessen.Denne variabelen vil være initialisert med standard verdi under deserialisering. (e.g: for objekter det er null, for int det er 0).
I tilfelle av statiske Variabler:- En variabel som er definert med statisk søkeord er ikke serialisert i løpet av bedriften prosessen.Denne variabelen vil bli lastet med gjeldende verdien som er definert i klassen under deserialisering.
Denne artikkelen er levert av Mehak Narang og Shubham Juneja., Hvis du liker GeeksforGeeks og ønsker å bidra, kan du også skrive en artikkel med contribute.geeksforgeeks.org eller e-post artikkelen din til [email protected]. Se artikkelen din vises på den GeeksforGeeks hovedsiden og hjelpe andre Geeks.
Vennligst skriv kommentarer hvis du finner noe feil, eller du ønsker å dele mer informasjon om temaet er diskutert ovenfor.
Oppmerksomhet leser! Ikke slutte å lære nå., Få tak i alle de viktige Java Foundation og Samlinger konsepter med det Grunnleggende av Java og Java-Samlinger Kurs hos student-vennlig pris og blitt industri klar.