Transient (java)

Transient (nerezident) - modificator al câmpurilor de clasă în limba Java. Câmpurile notate de acest modifier nu sunt scrise în fluxul de octeți când se utilizează algoritmul de serializare standard. Când obiectul este deserializat, aceste câmpuri sunt inițializate cu valoarea implicită.

Există o serie de situații în care trebuie să utilizați acest modificator. Mai jos sunt câteva dintre ele.

  • Clase de clasă. marcate cu tokenul Serializabil. este un obiect al unei clase neseralizabile (de exemplu, java.lang.Thread sau java.sql.ResultSet). În acest caz, încercarea de a serializa un obiect Clazz va duce la excluderea java.io.NotSerializableException. Pentru serializarea corectă, ar trebui să marcați câmpul neserializabil ca tranzitoriu.
  • Valoarea câmpului de clasă poate fi calculată după deserializare pe baza valorilor câmpurilor rămase. Un exemplu este un obiect care cachează rezultatele calculelor interne. În acest caz, din motive de economisire a timpului și a traficului, este logic să nu se serializeze câmpul.
  • Valoarea câmpului este corectă numai în contextul actual. De exemplu, câmpul care deține o referință la fabrica părinte este uneori marcat ca tranzitorie.
  • Este posibil ca unele câmpuri să nu fie serializate din motive de securitate, de exemplu, câmpul de parolă al unei anumite clase de utilizatori.

Deoarece câmpurile statice ale clasei nu sunt serializate, nu este deloc util să se utilizeze modificatorii statici și tranzitorii simultan. Cu toate acestea, compilatorul consideră că această combinație este corectă.

Dacă utilizați propriul algoritm serializare (implementare Externalizable UI) logica este descrisă de către dezvoltator, astfel încât în ​​acest caz, modificatorul tranzitorie este inutil.

O variabilă locală nu stochează starea obiectului și nu participă la serializare, deci nu poate fi marcată cu un modificator tranzitoriu.

Articole similare