GeeksforGeeks (Dansk)

serialisering er en mekanisme til at konvertere tilstanden af et objekt til en byte strøm. Deserialization er den omvendte proces, hvor byte-stream bruges til at genskabe den faktiske Java objekter i hukommelsen. Denne mekanisme bruges til at fortsætte objektet.

den oprettede byte-strøm er platform uafhængig. Så objektet serialiseret på en platform kan deserialiseres på en anden platform.,

for at gøre et Java-objekt serialiserbart implementerer vi java.io.Serialiableable-grænsefladen.
ObjectOutputStream-klassen indeholder methodriteobject () – metoden til serialisering af et objekt.

public final void writeObject(Object obj) throws IOException

ObjectInputStream-klassen indeholder readObject () – metode til deserialisering af et objekt.

public final Object readObject() throws IOException, ClassNotFoundException

Fordelene ved Serialisering
1. For at gemme / fortsætte tilstand af et objekt.
2. At rejse et objekt på tværs af et netværk.

kun objekter af disse klasser kan føljeton som gennemfører java.io.Serialiableable interface.,
Serialiableable er en markør interface (har ingen data medlem og metode). Det bruges til at “markere” java klasser, så objekter af disse klasser kan få visse kapacitet. Andre eksempler på markør grænseflader er: – Klonbare og Remote.

punkter at huske
1. Hvis en forælder klasse har implementeret Serialiableable interface så barn klasse behøver ikke at gennemføre det, men omvendt er ikke sandt.
2. Kun ikke-statiske data medlemmer gemmes via serialisering proces.
3. Statiske data medlemmer og forbigående data medlemmer gemmes ikke via serialisering proces.,Så hvis du ikke vil gemme værdien af et ikke-statisk datamedlem, så gør det forbigående.
4. Konstruktør af objekt kaldes aldrig, når et objekt deserialiseres.
5. Tilknyttede objekter skal gennemføre Serialiserbar grænseflade.
Eksempel :

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

SerialVersionUID
Serialisering runtime associerede virksomheder en version nummer med hver Serializable klasse kaldes en SerialVersionUID, som bruges i Deserialization for at kontrollere, at afsender og modtager af en føljeton objekt, der har lagt klasser for det pågældende objekt, der er kompatible med hensyn til serialisering., Hvis modtageren har indlæst en klasse for det objekt, der har en anden UID end den tilsvarende afsenders klasse, deserialisering vil resultere i en Invalidclasse .ception. En Serialiserbar klasse kan erklære sin egen UID eksplicit ved at erklære et feltnavn.
det skal være statisk, endelig og af typen lang.
i.,e – ENHVER-ADGANG-MODIFIER static final long serialVersionUID=42L;

Hvis en serializable klasse ikke udtrykkeligt erklærer en serialVersionUID, så serialisering runtime vil beregne en standard for, at klassen er baseret på forskellige aspekter af klasse, som beskrevet i Java-Objekt Serialisering Specifikation. Det er dog stærkt anbefales, at alle serializable klasser udtrykkeligt erklærer serialVersionUID værdi, da dens beregningen er meget følsom over for klasse detaljer, der kan variere, afhængigt af compiler-implementeringer, vil enhver ændring i klassen eller med en anden id, der kan påvirke føljeton data.,

det anbefales også at bruge privat modifier til UID, da det ikke er nyttigt som nedarvet medlem.

serialver
serialver er et værktøj, der leveres med JDK. Det bruges til at få serialVersionUID nummer til Java klasser.,
kan Du køre følgende kommando for at 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 Output:
– Du har set, mens deserializing objekt værdier af a og b har ændret sig. Årsagen er a blev markeret som forbigående og b var statisk.,
i tilfælde af forbigående variabler:- en variabel defineret med forbigående søgeord er ikke føljeton under serialisering proces.Denne variabel initialiseres med standardværdi under deserialisering. (f.eks: for objekter er det null, for int er det 0).
i tilfælde af statiske variabler:- en variabel defineret med statisk nøgleord er ikke føljeton under serialisering proces.Denne variabel vil blive indlæst med den aktuelle værdi defineret i klassen under deserialisering.

Denne artikel er bidraget af Mehak Narang og Shubham Juneja., Hvis du kan lide GeeksforGeeks og vil gerne bidrage, du kan også skrive en artikel med contribute.geeksforgeeks.org eller mail din artikel til [email protected]. Se din artikel, der optræder på GeeksforGeeks vigtigste side og hjælpe andre Nørder.
skriv venligst kommentarer, hvis du finder noget forkert, eller du vil dele mere information om emnet diskuteret ovenfor.

opmærksomhed læser! Stop ikke med at lære nu., Få fat i alle de vigtige Java Foundation og Samlinger begreber med de Grundlæggende elementer i Java og Java Samlinger Kursus på en elev-venlige pris og blive branchen klar.

Artikel Tags :

Java
Praksis Tags :

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *