Prechodné kľúčové slovo v Jave

1. Úvod

V tomto článku najskôr pochopíme prechodný kľúčové slovo a potom uvidíme jeho správanie na príkladoch.

2. Použitie prechodný

Pred prechodom na najskôr pochopíme serializáciu prechodný ako sa používa v kontexte serializácie.

Serializácia je proces premeny objektu na tok bajtov a deserializácia je jej opakom.

Keď označíme ľubovoľnú premennú ako prechodný, potom táto premenná nie je serializovaná. Proces serializácie preto ignoruje pôvodnú hodnotu premenných a ukladá predvolené hodnoty pre daný typ údajov.

The prechodný kľúčové slovo je užitočné v niekoľkých scenároch:

  • Môžeme ju použiť pre odvodené polia
  • Je to užitočné pre polia, ktoré nereprezentujú stav objektu
  • Používame ho na akékoľvek neserializovateľné odkazy

3. Príklad

Aby sme to videli v akcii, najskôr si vytvorme a Kniha trieda, ktorej objekt by sme chceli serializovať:

public class Book implements Serializable {private static final long serialVersionUID = -2936687026040726549L; private String bookName; súkromný prechodný popis reťazca; súkromné ​​prechodné kópie; // zakladatelia a zakladatelia}

Tu sme označili popis a kópie ako prechodný polia.

Po vytvorení triedy vytvoríme objekt tejto triedy:

Kniha kniha = nová Kniha (); book.setBookName ("Java Reference"); book.setDescription ("nebude uložený"); book.setCopies (25);

Teraz objekt serializujeme do súboru:

public static void serialize (Book book) throws Exception {FileOutputStream file = new FileOutputStream (fileName); ObjectOutputStream out = nový ObjectOutputStream (súbor); out.writeObject (kniha); out.close (); file.close (); }

Poďme rekonštruovať objekt teraz zo súboru:

public static Book deserialize () hodí Exception {FileInputStream file = new FileInputStream (fileName); ObjectInputStream in = nový ObjectInputStream (súbor); Book book = (Book) in.readObject (); in.close (); file.close (); spiatočná kniha; }

Nakoniec overíme hodnoty parametra kniha objekt:

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

Tu to vidíme bookName bol riadne vytrvaný. Na druhej strane kópie pole má hodnotu 0 a popis je nulový - predvolené hodnoty pre príslušné typy údajov - namiesto pôvodných hodnôt.

4. Správanie s konečné

Teraz sa pozrime na špeciálny prípad, kde použijeme prechodný s konečné kľúčové slovo. K tomu najskôr pridáme a konečný prechodný jav prvok v našom Kniha triedy a potom vytvorte prázdny Kniha objekt:

verejná trieda Kniha implementuje Serializovateľné {// existujúce polia súkromné ​​konečné prechodné Reťazec bookCategory = "Fiction"; // zakladatelia a zakladatelia}
Kniha kniha = nová Kniha ();

Keď overíme hodnoty po deserializácii, budeme to pozorovať prechodný bol pre toto pole ignorovaný a pôvodná hodnota zostala zachovaná:

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

5. Záver

V tomto článku sme videli použitie prechodný kľúčové slovo a jeho správanie pri serializácii a deserializácii. Tiež sme videli jeho odlišné správanie pri konečné kľúčové slovo.

Celý kód je ako vždy k dispozícii na GitHub.