Cuvânt cheie tranzitoriu în Java: ce este și cum funcționează?

Publicat: 2022-03-06

Ca toate celelalte limbaje de programare, Java Programming Language are o listă de cuvinte rezervate care au un sens specific. Acest set de 52 de cuvinte rezervate de Java sunt cunoscute ca cuvinte cheie. Deoarece au un sens predefinit, programatorii nu pot folosi cuvinte cheie pentru a-și denumi clasele, obiectele, variabilele și alți identificatori. Unul dintre aceste 52 de cuvinte cheie este cuvântul cheie tranzitoriu – care va fi punctul central al blogului nostru!

Cuprins

Înțelegerea cuvântului cheie tranzitoriu în Java

Transient este unul dintre cei mai utili modificatori prezenți în limbajul de programare Java. Rolul principal al cuvântului cheie tranzitoriu vine în cazurile de serializare. Modificatorul tranzitoriu poate fi aplicat membrilor câmpului unei clase pentru a dezactiva serializarea acestor membri specifici.

Mai simplu spus, cuvântul cheie tranzitoriu din Java poate fi folosit de programator pentru a evita serializarea. Dacă un anumit obiect al oricărei structuri de date a fost definit ca fiind tranzitoriu de către programator, acesta nu va fi serializat. Ca rezultat, puteți utiliza cuvântul cheie tranzitoriu pentru a indica JVM (Mașină Virtuală Java) că variabila dvs. tranzitorie nu va face parte din nicio stare persistentă a obiectului.

Să încercăm să înțelegem funcționarea cuvântului cheie tranzitoriu în Java folosind un exemplu foarte simplu. Mai întâi, vom crea o clasă Address și vom defini trei atribute pentru clasă – streetName, areaName și houseNumber. Îl vom păstra tranzitoriu, deoarece nu dorim să stocăm sau să salvăm al treilea atribut – houseNumber.

class Address implementează Serializable

{

private String streetName;

private String areaName;

Tranzitoriu privat String houseNumber;

//Setters și Getters

}

Acum să serializăm o instanță a clasei Address.

incearca {

ObjectOutputStream oos = nou ObjectOutputStream(new FileOutputStream(“addressinfo.ser”));

Adresă a = Adresă nouă();

a.setstreetName(„MIG”);

a.setareaName(“Vikas Nagar”);

emp.sethouseNumber(“110”);

//Serializează obiectul

oos.writeObject(a);

oos.close();

} prinde (Excepția e)

{

System.out.println(e);

}

Dacă codul nostru funcționează corect, informațiile „houseNumber” nu ar fi fost salvate, deoarece am definit-o ca fiind tranzitorie. Acum, vom încerca să-l deserializăm înapoi în obiectul original și să vedem dacă informațiile au fost salvate sau nu.

incearca {

ObjectInputStream o = nou ObjectInputStream(new FileInputStream(“addressinfo.ser”));

//Citește obiectul înapoi

Adresa readAddressInfo = (Adresa) o.readObject();

System.out.println(readAddressInfo.getstreetName());

System.out.println(readAddressInfo.getareaName());

System.out.println(readAddressInfo.gethouseNumber());

o.close();

} prinde (Excepția e)

{

System.out.println(e);

}

Dacă rulați partea de mai sus a programului Java, veți primi următorul rezultat:

MIG

Vikas Nagar

nul

După cum puteți vedea, informațiile „houseNumber” nu au fost salvate într-o stare permanentă din cauza serializării și de aceea primim valoarea „null” ca rezultat. Acesta este motivul pentru care este folosit cuvântul cheie tranzitoriu – pentru a stoca valori în variabile într-un mod care nu este permanent, ci tranzitoriu.

Cazuri de utilizare pentru cuvântul cheie „tranzitoriu” în Java

Acum că înțelegeți cuvântul cheie tranzitoriu și ce face acesta, următoarea întrebare logică care apare este: când folosim cuvântul cheie tranzitoriu?

Să ne extindem învățările despre cuvântul cheie tranzitoriu, analizând în detaliu unele dintre situațiile în care ați beneficia de utilizarea cuvintelor cheie tranzitorii.

Iată câteva cazuri de utilizare frecvent întâlnite pe care să le țineți minte:

  • Primul caz de utilizare al cuvântului cheie tranzitoriu este în situațiile în care este posibil să aveți câmpuri de date care sunt fie calculate, fie derivate din alte câmpuri din instanța clasei. Ca rezultat, aceste câmpuri trebuie să fie calculate programatic și depind de alte valori. De aceea, în loc să aibă astfel de câmpuri persistente, ele ar putea fi neserializate folosind cuvântul cheie tranzitoriu. Exemple de astfel de valori tranzitorii calculate din alte cifre ar putea include valori bazate pe marca temporală, valori bazate pe procente etc. În toate aceste cazuri, calculați valoarea unei variabile pe baza valorilor existente în prezent.
  • Un alt caz de utilizare important ar putea fi atunci când lucrați cu orice tip de informații securizate care nu ar trebui, în niciun caz, să fie scurse în afara JVM-ului, apoi care pot fi neserializate folosind cuvântul cheie tranzitoriu.
  • Câmpurile care nu sunt marcate „serializabile” în interiorul kitului de dezvoltare Java pot fi utilizate cu un cuvânt cheie tranzitoriu. Un lucru important de remarcat aici este că toate clasele Java care nu implementează interfața serializabilă nu pot fi serializate, deoarece nu sunt referite în nicio clasă serializabilă. Ca rezultat, acestea ar putea arunca „java.io.NotSerializableException” dacă nu sunt marcate „tranzitoriu” înainte de a serializa clasa principală.
  • Și, în sfârșit, există unele ocazii în care nu are sens să serializeze unele câmpuri. De exemplu, dacă ați adăugat o referință de logger în codul dvs., nu ați dori să serializați aceste informații. Ar trebui să serializați informațiile care reprezintă starea unei instanțe. Loggerele, pe de altă parte, nu reprezintă nicio stare, așa că nu are rost să le serializeze. Astfel, acestea ar trebui folosite cu cuvântul cheie tranzitoriu.

În concluzie

Cazurile de utilizare discutate mai sus nu sunt deloc exhaustive. Experimentați cu cuvântul cheie tranzitoriu și găsiți propriile cazuri de utilizare. La urma urmei, cuvintele cheie sunt create pentru programatori și veți putea face majoritatea cuvintelor cheie numai atunci când știți cum funcționează și ce înseamnă.

Cu asta, ajungem la sfârșitul acestui blog despre cuvintele cheie tranzitorii în Java. Acesta este unul dintre conceptele mai introductive pe care trebuie să cauți să le stăpânești pentru a crește în cariera ta de dezvoltare de software. Domeniul dezvoltării de software este extrem de dinamic, dar foarte primitor dacă sunteți gata să vă trageți șosetele și să depuneți toate eforturile!

La upGrad, am îndrumat și îndrumat studenți din întreaga lume, aparținând unor domenii diferite și i-am ajutat să-și înceapă cariera în dezvoltarea de software. PGP-ul nostru în Dezvoltare de Software – Specializarea în Dezvoltare Full Stack este conceput pentru profesioniști cu experiență și proaspăt. Pe lângă tutori experți și materiale de învățare de ultimă generație, beneficiați și de colegi talentați, asistență cuprinzătoare pentru plasare și mentorat individual cu lideri din industrie. Așa că verifică conținutul cursului și înregistrează-te în curând!

1. Care este cuvântul cheie tranzitoriu în Java?

Cuvintele cheie tranzitorii în Java pot fi folosite pentru a evita serializarea unui obiect. Folosind cuvinte cheie tranzitorii, vă asigurați că valoarea deținută de un anumit câmp nu va fi persistentă.

2. Cu ce ​​elemente din Java se poate folosi cuvântul cheie tranzitoriu?

Puteți utiliza cuvântul cheie tranzitoriu în Java pentru a nu serializa o clasă, o variabilă, un obiect sau un câmp.

3. Cum diferă cuvântul cheie tranzitoriu și cuvântul cheie volatil în Java?

Cuvântul cheie tranzitoriu este folosit pentru a evita procesul de serializare, în timp ce un cuvânt cheie volatil este folosit cu o variabilă, astfel încât să nu fie stocat în memoria principală.