Det forbigående nøgleord i Java

1. Introduktion

I denne artikel vil vi først forstå forbigående nøgleord, og så ser vi dets opførsel gennem eksempler.

2. Anvendelse af forbigående

Lad os først forstå serialiseringen, inden vi flytter til forbigående som det bruges i forbindelse med serialisering.

Serialisering er processen med at konvertere et objekt til en byte-strøm, og deserialisering er det modsatte af det.

Når vi markerer en variabel som forbigående, så er denne variabel ikke seriel. Serieliseringsprocessen ignorerer derfor den oprindelige værdi af variablerne og gemmer standardværdier for den datatype.

Det forbigående nøgleord er nyttigt i nogle få scenarier:

  • Vi kan bruge det til afledte felter
  • Det er nyttigt til felter, der ikke repræsenterer objektets tilstand
  • Vi bruger det til ikke-serierbare referencer

3. Eksempel

Lad os først oprette en for at se det i aktion Bestil klasse, hvis objekt vi gerne vil serialisere:

public class Book implementer Serialiserbar {privat statisk endelig lang serialVersionUID = -2936687026040726549L; private String bookName; privat forbigående beskrivelse af streng; private forbigående kopier; // getters og setters}

Her har vi markeret beskrivelse og kopier som forbigående felter.

Efter oprettelse af klassen opretter vi et objekt fra denne klasse:

Bogbog = ny bog (); book.setBookName ("Java Reference"); book.setDescription ("gemmes ikke"); book.setCopies (25);

Nu serier vi objektet i en fil:

offentlig statisk ugyldighed serieliseres (bogbog) kaster Undtagelse {FileOutputStream-fil = ny FileOutputStream (filnavn); ObjectOutputStream out = ny ObjectOutputStream (fil); out.writeObject (bog); out.close (); file.close (); }

Lad os deserialisere objektet nu fra filen:

offentlig statisk bog deserialize () kaster Undtagelse {FileInputStream-fil = ny FileInputStream (filnavn); ObjectInputStream in = ny ObjectInputStream (fil); Bogbog = (Bog) i. ReadObject (); i. luk (); file.close (); returbog; }

Endelig kontrollerer vi værdierne for Bestil objekt:

assertEquals ("Java Reference", book.getBookName ()); assertNull (book.getDescription ()); assertEquals (0, book.getCopies ());

Her ser vi det bognavn er vedvaret korrekt. På den anden side er kopier felt har værdi 0 og beskrivelse er nul - standardværdierne for deres respektive datatyper - i stedet for de oprindelige værdier.

4. Adfærd med endelig

Lad os nu se et specielt tilfælde, hvor vi bruger forbigående med endelig nøgleord. Til det skal vi først tilføje en endelig forbigående element i vores Bestil klasse og derefter oprette en tom Bestil objekt:

public class Book implementerer Serialiserbar {// eksisterende felter private final transient String bookCategory = "Fiction"; // getters og setters}
Bogbog = ny bog ();

Når vi verificerer værdierne efter deserialisering, overholder vi det forbigående blev ignoreret for dette felt, og den oprindelige værdi var vedvarende:

assertEquals ("Fiktion", book.getBookCategory ());

5. Konklusion

I denne artikel så vi brugen af forbigående nøgleord og dets adfærd i serialisering og deserialisering. Vi har også set dens forskellige opførsel med endelig nøgleord.

Som altid er al koden tilgængelig på GitHub.