Az átmeneti kulcsszó Java-ban
1. Bemutatkozás
Ebben a cikkben először megértjük a átmeneti kulcsszó, majd példákon keresztül megnézzük a viselkedését.
2. Használata átmeneti
Először értsük meg a sorosítást, mielőtt áttérünk a átmeneti mivel a szerializáció kontextusában használják.
A szerializálás az objektum byte-folyammá alakításának folyamata, a deserializáció pedig ennek ellentéte.
Amikor bármilyen változót jelölünk átmeneti, akkor az a változó nincs sorosítva. Ezért a sorosítási folyamat figyelmen kívül hagyja a változók eredeti értékét, és elmenti az adott adattípus alapértelmezett értékeit.
A átmeneti kulcsszó néhány forgatókönyv esetén hasznos:
- Használhatjuk származtatott mezőkhöz
- Hasznos olyan mezőknél, amelyek nem képviselik az objektum állapotát
- Minden nem sorosítható hivatkozáshoz használjuk
3. Példa
Ahhoz, hogy működésben lássuk, először hozzunk létre egy Könyv osztály, amelynek objektumát sorosítani szeretnénk:
public class Book megvalósítja a Serializálható {private static final long serialVersionUID = -2936687026040726549L; privát karakterlánc könyvNév; privát tranziens String leírás; privát tranziens int másolatok; // szerelők és beállítók}
Itt megjelöltük leírás és példányok mint átmeneti mezők.
Az osztály létrehozása után létrehozunk egy objektumot az osztályból:
Könyvkönyv = új Könyv (); book.setBookName ("Java referencia"); book.setDescription ("nem kerül mentésre"); book.setCopies (25);
Most sorosítjuk az objektumot egy fájlba:
public static void serialize (Book book) kivételt dob {FileOutputStream file = new FileOutputStream (fileName); ObjectOutputStream out = új ObjectOutputStream (fájl); out.writeObject (könyv); out.close (); file.close (); }
Deserializáljuk az objektumot most a fájlból:
public static Book deserialize () dobja a Kivételt {FileInputStream file = new FileInputStream (fileName); ObjectInputStream in = új ObjectInputStream (fájl); Könyvkönyv = (Könyv) in.readObject (); körülkerít(); file.close (); visszatérő könyv; }
Végül ellenőrizzük a könyv tárgy:
assertEquals ("Java Reference", book.getBookName ()); assertNull (book.getDescription ()); assertEquals (0, book.getCopies ());
Itt azt látjuk könyvNév megfelelően fennmaradt. Másrészt a példányok mező értéke 0 és a leírás van nulla - a megfelelő adattípusok alapértelmezett értékei - az eredeti értékek helyett.
4. Viselkedés vele végső
Lássunk egy speciális esetet, ahol felhasználjuk átmeneti a ... val végső kulcsszó. Ehhez először hozzáadunk egy végleges átmeneti elem a mi Könyv osztályt, majd hozzon létre egy üreset Könyv tárgy:
public class Könyv megvalósítja a Serializálható {// meglévő mezők privát végleges tranziens String bookCategory = "Fikció"; // szerelők és beállítók}
Könyvkönyv = új Könyv ();
Amikor a deserializáció után ellenőrizzük az értékeket, ezt megfigyeljük átmeneti figyelmen kívül hagyta ezt a mezőt, és az eredeti érték megmaradt:
assertEquals ("Szépirodalom", book.getBookCategory ());
5. Következtetés
Ebben a cikkben láttuk a átmeneti kulcsszó és viselkedése a szerializációban és a deserializációban. Azt is láttuk, hogy a végső kulcsszó.
Mint mindig, az összes kód elérhető a GitHubon.