"Bună, Amigo! Aș vrea să-ți mai spun un mic detaliu despre serializare."

Să presupunem că clasa noastră conține o referință la un InputStream . Atunci nu poate fi serializat, nu?

„Corect. Tu însuți ai spus că fluxurile nu pot fi serializate. Și nu poți serializa un obiect care are date neserializate.”

„Corect. Așa. Dar dacă clasa stochează date care nu joacă un rol semnificativ în starea sa și totuși împiedică clasa să fie considerată o clasă serializabilă? Nu contează că o clasă ar putea stoca lucruri inutile. Ar putea arunca acest lucru. date în orice moment și poate chiar o face — tot timpul.”

Pentru aceste cazuri, creatorii Java au venit cu cuvântul cheie tranzitoriu . Dacă scriem acest cuvânt cheie înaintea unei variabile membre, atunci va fi ignorat în timpul serializării. Starea sa nu va fi salvată sau reconstruită. De parcă nu ar exista. Acesta este exact lucrul pentru situațiile pe care tocmai le-am luat în considerare.

Vă amintiți memorarea în cache și modificatorul volatil ? Nu există reguli fără excepții .

Iată un astfel de exemplu al acestei fericiri:

Un exemplu de „pisică” cu o variabilă care este invizibilă pentru serializare:

Cod
class Cat implements Serializable
{
 public String name;
 public int age;
 public int weight;

 transient public InputStream in = System.in; 
}