GeeksforGeeks (Svenska)

serialisering är en mekanism för att konvertera tillståndet för ett objekt till en byte ström. Deserialisering är den omvända processen där byte-strömmen används för att återskapa det faktiska Java-objektet i minnet. Denna mekanism används för att kvarstå objektet.

byte-strömmen som skapas är plattformsoberoende. Så, objektet serialiserat på en plattform kan deserialiseras på en annan plattform.,

för att göra ett Java-objekt serialiserbart implementerar vi java.Io.Serialiserbart gränssnitt.
ObjectOutputStream-klassen innehåller writeObject () – metoden för serialisering av ett objekt.

public final void writeObject(Object obj) throws IOException

ObjectInputStream-klassen innehåller readObject () – metoden för att deserialisera ett objekt.

public final Object readObject() throws IOException, ClassNotFoundException

fördelar med serialisering
1. För att spara / kvarstå tillståndet för ett objekt.
2. Att resa ett objekt över ett nätverk.

endast objekten i dessa klasser kan serialiseras som implementerar java.Io.Serialiserbart gränssnitt.,
Serializable är ett markörgränssnitt (har ingen datamedlem och metod). Det används för att ”markera” java-klasser så att objekt i dessa klasser kan få viss kapacitet. Andra exempel på markörgränssnitt är: – Cloneable och Remote.

poäng att komma ihåg
1. Om en överordnad klass har implementerat Serialiserbart gränssnitt behöver inte barnklassen implementera det, men vice versa är inte sant.
2. Endast icke-statiska datamedlemmar sparas via Serialiseringsprocessen.
3. Statiska datamedlemmar och transienta datamedlemmar sparas inte via Serialiseringsprocessen.,Så, om du inte vill spara värdet på en icke-statisk data medlem sedan göra det övergående.
4. Konstruktör av objekt kallas aldrig när ett objekt är deserialiserat.
5. Associerade objekt måste implementera Serialiserbart gränssnitt.
exempel :

class A implements Serializable{// B also implements Serializable// interface.B ob=new B(); }

SerialVersionUID
serialization runtime associerar ett versionsnummer med varje serialiserbar klass som kallas SerialVersionUID, som används under deserialisering för att verifiera att avsändaren och mottagaren av ett serialiserat objekt har laddat klasser för det objektet som är kompatibla med avseende på serialisering., Om reciever har laddat en klass för objektet som har olika UID än motsvarande avsändarens klass, kommer Deserialiseringen resultera i en InvalidClassException. En serialiserbar klass kan deklarera sin egen UID uttryckligen genom att deklarera ett fältnamn.
Den måste vara statisk, slutlig och av typen lång.
jag.,e – NÅGON-FI-MODIFIERAREN static final långa serialVersionUID=42L;

Om en serializable klass inte uttryckligen deklarerar en serialVersionUID, då serialisering runtime kommer att beräkna en standard för den klass, som bygger på olika aspekter av klass, som beskrivs i Java-Objekt Serialisering Specifikation. Det rekommenderas dock starkt att alla serialiserbara klasser uttryckligen deklarerar serialVersionUID-värde, eftersom beräkningen är mycket känslig för klassdetaljer som kan variera beroende på kompilatorimplementeringar, kan varje förändring i klass eller med olika id påverka serialiserade data.,

det rekommenderas också att använda privat modifierare för UID eftersom det inte är användbart som ärvt medlem.

serialver
serialver är ett verktyg som kommer med JDK. Det används för att få serialVersionUID nummer för Java-klasser.,
Du kan köra följande kommando för att få serialVersionUID

serialver

exempel 1:



utgång:

Object has been serializedObject has been deserialized a = 1b = geeksforgeeks

exempel 2:



utgång:

Object has been serializedData before Deserialization.name = abage = 20a = 2b = 1000Object has been deserializedData after Deserialization.name = abage = 20a = 0b = 2000

beskrivning för utmatning:
Du har sett när objektet deserialiseras har värdena för A och B ändrats. Anledningen till att a var märkt som övergående och b var statisk.,
vid transienta variabler:- en variabel definierad med övergående nyckelord är inte serialiserad under serialiseringsprocessen.Denna variabel initieras med standardvärde under deserialisering. (t. ex. för objekt är det null, för int är det 0).
vid statiska variabler:- en variabel som definieras med statiskt nyckelord serialiseras inte under serialiseringsprocessen.Denna variabel laddas med aktuellt värde definierat i klassen under deserialisering.

i Denna artikel har bidragit med Mehak Narang och Shubham Juneja., Om du gillar GeeksforGeeks och vill bidra, kan du också skriva en artikel med contribute.geeksforgeeks.org eller maila din artikel till [email protected]. se din artikel som visas på GeeksforGeeks huvudsida och hjälpa andra nördar.
Skriv gärna kommentarer om du hittar något felaktigt, eller om du vill dela mer information om ämnet som diskuteras ovan.

uppmärksamhet läsare! Sluta inte lära dig nu., Få tag på alla viktiga Java Foundation och samlingar begrepp med grunderna i Java och Java Samlingar kurs på ett studentvänligt pris och bli industrin redo.

Artikeltaggar:

Java
Övningstaggar:

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *