【发布时间】:2012-09-07 11:17:46
【问题描述】:
请有人解释一下为什么反序列化后调用了“Gambler”类的构造函数,但说“Player”类的构造函数没有调用?
import java.io.*;
class Gambler {
Gambler() { System.out.print("d"); }
}
class Person extends Gambler implements Serializable {
Person() { System.out.print("c"); }
}
class Player extends Person {
Player() { System.out.print("p"); }
}
class CardPlayer extends Player implements Serializable {
CardPlayer() { System.out.print("c"); }
public static void main(String[] args) {
CardPlayer c1 = new CardPlayer();
try {
FileOutputStream fos = new FileOutputStream("play.txt");
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(c1);
os.close();
FileInputStream fis = new FileInputStream("play.txt");
ObjectInputStream is = new ObjectInputStream(fis);
CardPlayer c2 = (CardPlayer) is.readObject();
is.close();
}
catch (Exception x ) { }
}
}
【问题讨论】:
-
因为这是对象序列化规范中的强制要求?
标签: java serialization