黑马程序员技术交流社区

标题: 亲们,帮忙看下这是什么异常 [打印本页]

作者: 坚持努力wbj    时间: 2016-9-7 23:39
标题: 亲们,帮忙看下这是什么异常

[AppleScript] 纯文本查看 复制代码
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class aa implements Serializable{
        public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
                aa it=new aa();
                ObjectOutputStream objectOutputStream=new ObjectOutputStream(new FileOutputStream("demo/extend115.txt"));
                ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("demo/extend115.txt"));
                //结论,调整下面的类中的的实现可序列化的位置,可以得到如下结论
                //反序列化时只显示调用未实现序列化的父类
                System.out.println("测试在fu1实现可序列化");
                System.out.println("序列化:");
                fu2 f2xlh=it.new fu2();
                objectOutputStream.writeObject(f2xlh);
                objectOutputStream.flush();
                System.out.println("反序列化");
                fu2 f2=(fu2)objectInputStream.readObject();
                System.out.println("测试在fu0实现可序列化结束");

        }
        class fu0 {
                public fu0(){
                        System.out.println("fu0");
                }
        }
        class fu1 extends fu0 implements Serializable{
                public fu1(){
                        System.out.println("fu1");
                }
        }
        class fu2 extends fu1{
                public fu2(){
                        System.out.println("fu2");
                }
        }
       
       
}

错误提示:
测试在fu1实现可序列化
序列化:
fu0
fu1
fu2
反序列化
Exception in thread "main" java.io.InvalidClassException: fuxi.Demos.aa$fu2; no valid constructor
        at java.io.ObjectStreamClass$ExceptionInfo.newInvalidClassException(Unknown Source)
        at java.io.ObjectStreamClass.checkDeserialize(Unknown Source)
        at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at fuxi.Demos.aa.main(aa.java:24)






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2