黑马程序员技术交流社区

标题: 有人可以看懂这个异常吗? [打印本页]

作者: 坚持努力wbj    时间: 2016-9-4 13:33
标题: 有人可以看懂这个异常吗?
在下面的代码中进行如下操作:
先注释掉代码2进行序列化,然后打开代码2注释掉代码1进行反序列化
在后一操作中报出以下异常
Exception in thread "main" java.io.EOFException
        at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at demos.DemoOfSeridizableInExtends.main(DemoOfSeridizableInExtends.java:27)


[Java] 纯文本查看 复制代码
package demos;

import java.io.EOFException;
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 DemoOfSeridizableInExtends implements Serializable{
        public static void main(String[] args) throws EOFException,FileNotFoundException, IOException, ClassNotFoundException {
                ObjectOutputStream objectOutputStream =new ObjectOutputStream(new FileOutputStream("demo/jas.dat"));
               
                //以下代码1
                DemoOfSeridizableInExtends  it=new DemoOfSeridizableInExtends();
                foo3 f3=it.new foo3();
                objectOutputStream.writeObject(f3);
                objectOutputStream.flush();
                objectOutputStream.close();
                //以上为代码1
               
               
                //以下为代码2
                ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream("demo/jas.dat"));
                foo3 f3out=(foo3) objectInputStream.readObject();//第二步这行报错了
                System.out.println(f3out);
                objectInputStream.close();
                //以上为代码2
        }
        class foo implements Serializable{
                String name;
                public foo(){
                        System.out.println("foo___");
                }
        }
        class  foo1 extends foo{
                public foo1(){
                        System.out.println("foo1___");
                }
        }
        class foo2 extends foo1 implements Serializable{
                public  foo2() {
                        System.out.println("foo2___");
                }
        }
        class foo3 extends foo2 {
               
                public  foo3() {
                        this.name="jj";
                        System.out.println("foo3:"+this.name);
                       
                }
                @Override
                public String toString() {
                        return "foo3 ["+"name="+name+"]";
                }
        }
}





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