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.