Privremena ključna riječ u Javi
1. Uvod
U ovom ćemo članku prvo razumjeti prolazan ključnu riječ, a zatim ćemo njezino ponašanje vidjeti na primjerima.
2. Korištenje prolazan
Prvo da shvatimo serializaciju prije nego što pređemo na prolazan kao što se koristi u kontekstu serializacije.
Serijalizacija je postupak pretvaranja objekta u bajtni tok, a deserializacija je suprotna od njega.
Kad bilo koju varijablu označimo kao privremeni, tada ta varijabla nije serializirana. Stoga postupak serializacije zanemaruje izvornu vrijednost varijabli i sprema zadane vrijednosti za taj tip podataka.
The prolazan ključna riječ korisna je u nekoliko scenarija:
- Možemo ga koristiti za izvedena polja
- Korisno je za polja koja ne predstavljaju stanje objekta
- Koristimo ga za bilo koje reference koje se ne mogu serirati
3. Primjer
Da bismo ga vidjeli na djelu, prvo stvorimo a Knjiga klasa čiji bismo objekt željeli serializirati:
javna klasa Book implementira Serializable {private static final long serialVersionUID = -2936687026040726549L; private String bookName; privatni prijelazni opis niza; privatne privremene int kopije; // geteri i postavljači}
Evo, označili smo opis i kopije kao prolazan polja.
Nakon stvaranja klase, stvorit ćemo objekt ove klase:
Knjiga knjiga = nova Knjiga (); book.setBookName ("Java referenca"); book.setDescription ("neće biti spremljeno"); book.setCopies (25);
Sada ćemo objekt serializirati u datoteku:
javna statička void serialize (knjiga knjiga) baca iznimku {FileOutputStream file = new FileOutputStream (fileName); ObjectOutputStream out = novi ObjectOutputStream (datoteka); out.writeObject (knjiga); out.close (); file.close (); }
Deserializirajmo objekt sada iz datoteke:
javna statička knjiga deserializira () baca izuzetak {FileInputStream file = new FileInputStream (fileName); ObjectInputStream u = novi ObjectInputStream (datoteka); Knjiga knjiga = (Knjiga) u.readObject (); in.close (); file.close (); knjiga povratka; }
Na kraju ćemo provjeriti vrijednosti knjiga objekt:
assertEquals ("Java referenca", book.getBookName ()); assertNull (book.getDescription ()); assertEquals (0, book.getCopies ());
Ovdje to vidimo bookName je pravilno ustrajalo. S druge strane, kopije polje ima vrijednost 0 i opis je null - zadane vrijednosti za njihove odgovarajuće tipove podataka - umjesto izvornih vrijednosti.
4. Ponašanje sa konačni
Sada ćemo vidjeti poseban slučaj u kojem ćemo koristiti prolazan s konačni ključna riječ. Za to ćemo prvo dodati a završni prijelazni element u našem Knjiga razreda, a zatim stvorite prazno Knjiga objekt:
javna klasa Book implementira Serializable {// postojeća polja private final transient String bookCategory = "Fiction"; // geteri i postavljači}
Knjiga knjiga = nova Knjiga ();
Kad provjerimo vrijednosti nakon deserializacije, primijetit ćemo to prolazan za ovo polje je zanemareno, a izvorna vrijednost je zadržana:
assertEquals ("Beletristika", book.getBookCategory ());
5. Zaključak
U ovom smo članku vidjeli upotrebu prolazan ključna riječ i njezino ponašanje u serializaciji i deserializaciji. Također smo vidjeli njegovo različito ponašanje kod konačni ključna riječ.
Kao i uvijek, sav je kôd dostupan na GitHub-u.