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)

解决方案 »

  1.   

    joejoe1991()继承关系,反串行时会调用父类构造函数啊
      

  2.   

    你的“pc”输出是在你实例化Cardplay并执行main方法时打印的,跟串行化没关系。
      

  3.   

    FileInputStream fis=new FileInputStream("play.text");
     FileInputStream fis=new FileInputStream("play.txt");//文件后缀名写错了.
      

  4.   

    建议:
    catch (Exception x){}
    改成:
    catch (Exception x){
      x.printStackTrace();
    }
    //不要轻易的去除异常的处理.否则不利于找到程序的问题.
      

  5.   

    pc是由 Cardplay c1=new Cardplay(); 产生的,你后面的文件操作有问题,捕捉异常就知道原因了
      

  6.   

    荳肴・逋ス・・諠ウ遏・驕鍋ュ疲。医€ゅ€ゅ€ゅ€ゅ€ゅ€・縲ゅ€ゅ€ゅ€ゅ€ゅ€ゅ€ゅ€・遲牙セ・ォ倅ココ隗」遲費ス橸ス橸ス橸ス橸ス橸ス橸ス橸ス・