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.