Em um determinado livro lemos: "Um construtor ou qualquer inicialização não são chamados durante
a desserialização do objeto. Os campos transient são associados a valores padrão para cada tipo de dado"
O seguinte código imprime "catName" duas vezes. Mas "Um construtor ou qualquer inicialização não são chamados durante
a desserialização do objeto".
Alguem pode elucidar esse problema de inicialização de um objeto serializado?
import java.io.*;
class Cat implements Serializable {
private String catName = "catName"; //<----------- INICIALIZAÇÃO
public String toString() { return catName;}
}
public class Teste {
public static void main(String[] args) {
Cat cat1 = new Cat();
System.out.println("cat..: " + cat1); //<----------- IMPRIME "catName"
try {
FileOutputStream fo = new FileOutputStream("teste.do");
ObjectOutputStream os = new ObjectOutputStream(fo);
os.writeObject(cat1);
os.close();
FileInputStream fi = new FileInputStream("teste.do");
ObjectInputStream oi = new ObjectInputStream(fi);
Cat cat2 = (Cat) oi.readObject();
System.out.println("cat..: " + cat2); //<----------- IMPRIME "catName"
} catch(Exception e) {
e.printStackTrace();
}
}
}