"Olá, Amigo! Gostaria de contar mais um pequeno detalhe sobre a serialização."
Suponha que nossa classe contenha uma referência a algum InputStream . Então não pode ser serializado, certo?
"Certo. Você mesmo disse que os fluxos não podem ser serializados. E você não pode serializar um objeto que tenha dados não serializáveis."
"Certo. Exatamente. Mas e se a classe armazenar dados que não desempenham um papel significativo em seu estado e ainda impedir que a classe seja considerada uma classe serializável? Não importa que uma classe possa armazenar coisas desnecessárias. Isso pode ser descartado dados a qualquer momento e talvez até o faça - o tempo todo."
Para esses casos, os criadores do Java criaram a palavra-chave transient . Se escrevermos esta palavra-chave antes de uma variável de membro, ela será ignorada durante a serialização. Seu estado não será salvo ou reconstruído. Como se não existisse. Esta é a coisa certa para as situações que acabamos de considerar.
Lembra do cache e do modificador volátil ? Não há regras sem exceções .
Aqui está um exemplo dessa felicidade:
Um exemplo «cat» com uma variável que é invisível para serialização:
class Cat implements Serializable
{
public String name;
public int age;
public int weight;
transient public InputStream in = System.in;
}
GO TO FULL VERSION