De ce java are câmpuri tranzitorii - tranzitorie, cod q - rus (en)

Cuvântul temporar din Java este folosit pentru a indica faptul că câmpul nu trebuie serializat.

Variabilele pot fi etichetate ca fiind tranzitorii pentru a indica faptul că acestea nu fac parte din starea persistentă a obiectului.







De exemplu, puteți avea câmpuri primite din alte câmpuri și ar trebui să fie executate numai programabil și să nu salvați starea prin serializare.

Aici este clasa GalerieImage care conține imaginea și miniaturile obținute din imagine:

În acest exemplu, thumbnailImage este o imagine miniaturală generată prin apelarea metodei generateThumbnail.

Câmpul thumbnailImage este marcat ca fiind tranzitoriu. astfel încât numai imaginea originală este serializată și nu sunt salvate atât imaginea originală cât și miniatură. Aceasta înseamnă că aveți nevoie de mai puțin spațiu de stocare pentru a salva obiectul serializat. (Desigur, acest lucru poate sau nu poate fi de dorit în funcție de cerințele sistemului - este doar un exemplu.)

În timpul deserializării, metoda readObject este chemată să efectueze orice operațiune necesară pentru a restabili starea obiectului înapoi la starea în care a avut loc serializarea. Trebuie să creați o schiță aici, astfel încât metoda readObject este suprascrisă, astfel încât schița va fi generată prin apelarea metodei generateThumbnail.

Pentru mai multe informații, consultați „Cunoasteti secretele articol API Java serializare» (care a fost inițial disponibil în Developer Network Sun) are o secțiune care discută utilizarea și prezentarea de scenarii în care cuvântul cheie tranzitoriu este utilizat pentru a preveni serializarea anumitor domenii.

Înainte de a înțelege cuvântul cheie tranzitoriu. Trebuie să înțelegeți conceptul de serializare. Dacă cititorul știe despre serializare, sări peste primul punct.

Ce este serializarea?

Serializarea este procesul de conservare permanentă a stării unui obiect. Aceasta înseamnă că starea obiectului este convertită într-un flux octet și stocată într-un fișier. În mod similar, putem folosi deserializarea pentru a returna starea unui obiect de la octeți. Acesta este unul dintre conceptele importante ale programării Java, deoarece serializarea este folosită în principal în programele de rețea. Obiectele care trebuie transferate prin rețea trebuie convertite în octeți. În acest scop, fiecare clasă sau interfață trebuie să implementeze interfața Serializabilă. Aceasta este o interfață de marcare fără metode.

Acum, care este cuvântul cheie tranzitoriu și scopul acestuia?

În mod implicit, toate variabilele de obiect sunt convertite într-o stare permanentă. În unele cazuri, este posibil să evitați stocarea unor variabile, deoarece nu este necesar să stocați aceste variabile. Deci, puteți declara aceste variabile tranzitorii. Dacă variabila este declarată tranzitorie. atunci nu va fi salvat. Acesta este scopul principal al cuvântului cheie tranzitorie.

Vreau să explic următoarele două puncte cu următorul exemplu:

Iar rezultatul va fi după cum urmează:

Numele intermediului este declarat tranzitoriu. astfel încât nu va fi stocat în depozit permanent.

Deci, puteți defini variabile pe care nu doriți să le serializați.

Într-un obiect, puteți avea informații pe care nu doriți să le serializați / persistați (eventual o referință la obiectul din fabrică părinte) sau poate că nu are sens pentru serializare. Prin plasarea lor ca "de tranziție", mecanismul de serializare va ignora aceste domenii.







Contribuția mea mică:

Ce este o variabilă de sărituri în Java?
Într-o propoziție simplă, orice variabilă care se schimbă cu cuvântul cheie tranzitoriu devine variabila java a tranziției.

De ce avem nevoie de o variabilă tranzitorie în Java?
Cuvântul cheie Transient vă oferă un anumit control asupra procesului de serializare și vă permite să excludeți anumite proprietăți ale obiectului din procesul de serializare. De ceva timp are sens să nu se serializeze anumite atribute ale obiectului, vom vedea care variabile nu ar trebui să fie serializate și trebuie să fie tranzitorii în secțiunea următoare.

O variabilă tranzitorie este o variabilă care nu poate fi serializată.

Un exemplu atunci când acest lucru ar putea fi util, ceea ce vine în minte sunt variabilele care fac sens doar în contextul unui caz particular al unui obiect și care nu mai sunt valabile după serializarea și deserializarea obiectului. În acest caz, este util ca aceste variabile să devină nulă, astfel încât să le puteți reinițializa cu date utile, după cum este necesar.

tranzitorie este folosit pentru a indica faptul că câmpul de clasă nu trebuie să fie serializat. Probabil cel mai bun exemplu este câmpul Thread. De obicei, nu există niciun motiv pentru a serializa Thread-ul. deoarece starea sa este foarte "specifică fluxului".

Deoarece nu toate variabilele au o natură serializabilă

În plus, acest modifier poate utiliza sisteme de serializare care diferă de Java nativ. De exemplu, Hibernate nu va salva câmpurile marcate cu @Transient sau cu un modificator temporar. Terracotta respectă de asemenea acest modificator.

Cred că sensul figurat al modificatorului este că "acest câmp este destinat doar pentru utilizare în memorie. Nu o salvați sau o mutați în afara acestei mașini virtuale în nici un fel. Ie Nu vă puteți baza pe valoarea sa într-un alt spațiu de stocare VM. La fel de volatile, nu vă puteți baza pe o anumită semantică a memoriei și a semanticii.

Serializarea este procesul de stocare a stării unui obiect într-un format persistent (de exemplu, un fișier sau un flux de baze de date) și apoi recuperarea acestuia din flux (de-serializare). În Java, un obiect de clasă este serializat dacă clasa implementează interfața java.io.Serializable. Aceasta este o interfață token care spune JVM că clasa are dreptul de serializare.

În această clasă de modele, există trei puncte importante: trebuie să implementeze interfața Serializabilă. În caz contrar, vom obține java.io.NotSerializableException când încercăm să serializăm un obiect de clasă. Se declară o constantă numită serialVersionUID și se atribuie o valoare lungă:

Rețineți că câmpul de parolă este marcat ca fiind de tranziție:

Deoarece nu dorim să stocăm parola când serializăm un obiect. Regula este că atunci când o variabilă este marcată ca tranzitorie, obiectul acesteia nu va fi serializat în timpul serializării.

O variabilă tranzitorie este o variabilă care nu poate fi serializată. Utilizați cuvântul cheie tranzitoriu pentru a specifica mașinii virtuale Java că variabila specificată nu face parte din starea persistentă a obiectului.

Modificatorii de acces utilizați de Java sunt statici, finiți, abstracți, sincronizați, nativi, instabili, temporari și stricți.

Următorul tabel listează specificatorii de acces și modificatorii Java care pot fi aplicați variabilelor, metodelor și claselor.

Înainte de a răspunde la această întrebare, trebuie să vă explic SERIALIZAREA. deoarece dacă înțelegeți ce înseamnă serializare într-un computer științific, puteți înțelege cu ușurință acest cuvânt cheie.

Serializarea Când un obiect este transmis printr-o rețea / stocat pe un mediu fizic (fișier.), Obiectul trebuie să fie "serializat". Serializarea convertește o serie de obiecte de stat octet. Acești octeți sunt trimiși la rețea / stocați, iar obiectul este recreat din acești octeți.
exemplu

Acum, dacă nu doriți să restabiliți / salvați câmpul acestui obiect. SO. puteți utiliza cuvântul cheie tranzitoriu

Acest lucru este necesar atunci când nu doriți să împărtășiți datele confidențiale care apar cu serializarea.

În conformitate cu valoarea temporară a Google, care durează doar pentru o perioadă scurtă de timp; nepermanent.

Acum, dacă doriți să faceți ceva tranzitoriu în Java, utilizați cuvântul cheie tranzitoriu.

Întrebare: unde să folosim procesul de tranziție?

R: De obicei, în java putem stoca date în fișiere, cumpără-le în variabile și scriind aceste variabile în fișiere, acest proces se numește Serializare. Acum, dacă vrem ca datele variabile să fie scrise într-un fișier, am face această variabilă tranzitorie.

Rezultat tranzitoriu int = 10;

Notă: variabilele tranzitorii nu pot fi locale.







Articole similare

Trimiteți-le prietenilor: