CodeGym /Corsi /All lectures for IT purposes /modificatore transitorio

modificatore transitorio

All lectures for IT purposes
Livello 1, Lezione 150
Disponibile

"Ciao, Amigo! Vorrei raccontarti un altro piccolo dettaglio sulla serializzazione."

Supponiamo che la nostra classe contenga un riferimento a qualche InputStream . Quindi non può essere serializzato, giusto?

"Giusto. Tu stesso hai detto che i flussi non possono essere serializzati. E non puoi serializzare un oggetto che ha dati non serializzabili."

"Giusto. Proprio così. Ma cosa succede se la classe archivia dati che non svolgono un ruolo significativo nel suo stato e tuttavia impedisce alla classe di essere considerata una classe serializzabile? Non importa se una classe potrebbe archiviare cose non necessarie. Potrebbe lanciare questo dati in qualsiasi momento e forse lo fa anche sempre".

Per questi casi, i creatori di Java hanno escogitato la parola chiave transient . Se scriviamo questa parola chiave prima di una variabile membro, verrà ignorata durante la serializzazione. Il suo stato non sarà salvato né ricostruito. Come se non esistesse. Questa è la cosa giusta per le situazioni che abbiamo appena considerato.

Ricordi la memorizzazione nella cache e il modificatore volatile ? Non ci sono regole senza eccezioni .

Ecco uno di questi esempi di questa felicità:

Un esempio «gatto» con una variabile invisibile alla serializzazione:

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

 transient public InputStream in = System.in; 
}
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION