public class Parent {
public Parent() {
System.out.println("Parent");
}
}
public class Child extends Parent implements Serializable {
public Child() {
System.out.println("Child");
}
}
public class Demote {
public static void main(String[] args) {
Child c=new Child();
try {
FileOutputStream fos=new FileOutputStream
("D:\\DemoFile\\Testword5.txt");
ObjectOutputStream oot=new ObjectOutputStream(fos);
oot.writeObject(c);
FileInputStream fin=new FileInputStream
("D:\\DemoFile\\Testword5.txt");
ObjectInputStream oin=new ObjectInputStream(fin);
oin.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
L'output di questo codice è - Parent Child Parent.Classe genitore Constructor
Il primo set Parent Child viene chiamato perché viene chiamato il costruttore di argomenti zero. oin.readObject() restituisce un oggetto figlio. Quindi, perché viene chiamato solo il costruttore della classe padre e perché non la classe figlio
Può essere duplicato: http://stackoverflow.com/questions/8141440/how-are-constructors-called-during-serialization-and-deserialization – Rafiq