"¡Hola, amigo! Me gustaría contarte un pequeño detalle más sobre la serialización".

Supongamos que nuestra clase contiene una referencia a algún InputStream . Entonces no se puede serializar, ¿verdad?

"Correcto. Tú mismo dijiste que las transmisiones no se pueden serializar. Y no puedes serializar un objeto que tiene datos no serializables".

"Correcto. Así es. Pero, ¿y si la clase almacena datos que no juegan un papel importante en su estado y, sin embargo, evita que la clase se considere una clase serializable? No importa que una clase pueda almacenar cosas innecesarias. Podría tirar esto datos en cualquier momento y tal vez incluso lo haga, todo el tiempo".

Para estos casos, a los creadores de Java se les ocurrió la palabra clave transitoria . Si escribimos esta palabra clave antes de una variable miembro, se ignorará durante la serialización. Su estado no se guardará ni se reconstruirá. Como si no existiera. Esto es justo para las situaciones que acabamos de considerar.

¿Recuerdas el almacenamiento en caché y el modificador volátil ? No hay reglas sin excepciones .

He aquí un ejemplo de esta felicidad:

Un ejemplo de «gato» con una variable que es invisible para la serialización:

Código
class Cat implements Serializable
{
 public String name;
 public int age;
 public int weight;

 transient public InputStream in = System.in; 
}