Java >> Java tutorial >  >> Tag >> transient

Forbigående i Java:Hvad, hvorfor og hvordan virker det?

Forbigående i Java bruges til at markere, at medlemsvariablen ikke skal serialiseres, når den fortsættes til strømme af bytes. Dette søgeord spiller en vigtig rolle for at opfylde sikkerhedsbegrænsninger i Java . Den ignorerer den oprindelige værdi af en variabel og gemmer standardværdien for den variable datatype.

Følgende er de emner, der vil blive diskuteret i denne artikel:

  • Hvad er forbigående søgeord i Java?
  • Hvorfor bruges Transient modifier?
  • Hvordan bruger jeg Transient med det endelige søgeord?
  • Forskellen mellem forbigående og flygtig

Lad os komme i gang!

Hvad er forbigående søgeord i Java?

Transient er dybest set en variabel modifikator, der bruges til serialisering. Hvad er serialisering? Serialisering i Java er en mekanisme, der bruges til at konvertere et objekts tilstand til en bytestrøm. På tidspunktet for serialisering, hvis du ikke ønsker at gemme værdien af ​​en bestemt variabel i en fil, skal du bruge det forbigående nøgleord.

Syntaks :

private transient <member variable>;

eller

 transient private <member variable>; 

Hvis du definerer et datamedlem som forbigående, bliver det ikke serialiseret. Dette skyldes, at hvert felt er markeret som forbigående bliver ikke serialiseret. Du kan bruge dette forbigående nøgleord til at indikere Java Virtual Machine (JVM), at den transiente variabel ikke er en del af et objekts vedvarende tilstand.

Lad os skrive et meget grundlæggende eksempel for at forstå Transient i Java.

 class Demo implements Serializable
{
// Making human transient
private transient String human;
transient int age;
// serialize other fields
private String name, address;
Date dob;
// rest of the code
}

Her oprettede jeg en klasse kaldet Demo, som implementerer Serializable. Aldersdatamedlemmet i Demo-klassen er erklæret som forbigående, dets værdi vil ikke blive serialiseret. Men hvis du deserialiserer objektet, får du standardværdien for en forbigående variabel.

Hvorfor bruges Transient modifier?

Transient i Java bruges til at angive, at et felt ikke skal være en del af serialiseringsprocessen.

Modifieren Transient kan anvendes på medlemsvariabler i en klasse for at slå serialisering fra på disse medlemsvariabler. Hvert felt, der er markeret som forbigående, bliver ikke serialiseret. Du kan bruge dette forbigående nøgleord til at indikere over for den virtuelle Java-maskine, at den forbigående variabel ikke er en del af et objekts vedvarende tilstand.

Du har måske dette spørgsmål kørende i dit hoved. Hvornår skal denne Transient bruges i Java?

Svaret på dette ville være:

  1. Du kan bruge dette forbigående søgeord, når du har felter, der er afledt/beregnet fra andre felter inden for forekomsten af ​​en klasse.
  2. Brug det med felter, der ikke er markeret som "Serialiserbare" i JDK eller applikationskode. Dette skyldes, at klasser, der ikke implementerer Serializable-grænsefladen, henvises til inden for en hvilken som helst serialiserbar klasse og ikke kan serialiseres og vil give "java.io.NotSerializableException" undtagelse. Bemærk, at disse ikke-serialiserbare referencer skal markeres som "forbigående", før hovedklassen serialiseres.

Hvordan bruger jeg Transient med det endelige søgeord?

Forbigående i Java kan bruges med det endelige søgeord fordi det opfører sig forskelligt i forskellige situationer, hvilket generelt ikke er tilfældet med andre søgeord i Java.

Tag et kig på dette eksempel.

private String
firstName;
private String
lastName;

//final field 1

public final transient String pass= "password";

//final field 2

public final transient Lock lock = Lock.getLock("demo");

Når du nu kører serialiseringen (skriv/læs) igen, får du dette output:

Kenny
Stark
adgangskode
null

Dette skyldes, at vi har markeret "passet" til transient, og det felt blev stadig serialiseret. For en lignende erklæring blev låsen ikke serialiseret. Årsagen er, at når et endeligt felt evalueres som et konstant udtryk, serialiseres det af JVM, der ignorerer tilstedeværelsen af ​​forbigående søgeord.

Forskel mellem forbigående og flygtig

Dette er et vigtigt spørgsmål, der stilles under et Java-interview . Hvad er forskellen mellem forbigående og flygtige søgeord i Java?

Uflygtig og Transient er to helt forskellige søgeord, der bruges i Java . Et forbigående nøgleord bruges under serialisering af Java-objekt. Flygtig er relateret til synligheden af ​​variabler ændret af flere tråde.

Den eneste lighed mellem disse søgeord er, at de er mindre brugte eller ualmindelige søgeord og ikke så populære som offentlige, statiske eller endelige.

Dette bringer os til slutningen af ​​denne artikel, hvor vi har lært om Transient i Java. Håber du er klar over alt, hvad der er blevet delt med dig i denne øvelse.

Hvis du fandt denne artikel om "Forbigående i Java" relevant, så tjek Edurekas Java-kursus , en betroet online læringsvirksomhed med et netværk af mere end 250.000 tilfredse elever spredt over hele kloden.

Vi er her for at hjælpe dig med hvert trin på din rejse, for at blive et udover dette java-interview-spørgsmål, kommer vi med et pensum, som er designet til studerende og professionelle, der ønsker at være Java-udvikler. Kurset er designet til at give dig et forspring i Java-programmering og træne dig til både kerne- og avancerede Java-koncepter sammen med forskellige Java-frameworks som Hibernate &Spring.

Hvis du støder på spørgsmål, er du velkommen til at stille alle dine spørgsmål i kommentarfeltet i "Forbigående i Java", og vores team vil med glæde svare.


Java tag