import java.io.*;
class Player
{
Player(){System.out.println( "p ");}
}
public class Cardplay extends Player implements Serializable{
Cardplay(){System.out.println( "c ");}
public static void main(String[] args) {
Cardplay c1=new Cardplay();
try{
FileOutputStream fos=new FileOutputStream( "play.txt ");
ObjectOutputStream os=new ObjectOutputStream(fos);
os.writeObject(c1);
os.close();
FileInputStream fis=new FileInputStream( "play.text ");
ObjectInputStream is=new ObjectInputStream(fis);
c1=(Cardplay)is.readObject();
is.close();
}
catch (Exception x){}
}
}
-----------------------------------
按照书里写的反串行时会运行父类的构造函数。那么结果应该是 pcp 可我在运行时结果老是 pc. 为什么呢(我的JDK 1.6)
------解决方案--------------------
我没记错的话
从文件中把对象读取出来的时候 是不会执行构造方法的。
构造方法是在实例化一个对象的时候调用的
你只是把对象从文件里读出来而已。
------解决方案--------------------
建议:
catch (Exception x){
}
改成:
catch (Exception x){
x.printStackTrace();
}
//不要轻易的去除异常的处理.否则不利于找到程序的问题.