Java细微序列化

时间:2014-05-06 21:02:42

标签: java

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Manager {

    public static void main(String[] args) throws Exception {
        serialize();
        deSerialize();
    }

    public static void serialize() throws Exception {

        E obj = new E();
        obj.num = 100;

        F f1 = new F();
        f1.j = 40;
        f1.e1 = obj;

        FileOutputStream fout = new FileOutputStream("test1.txt");
        ObjectOutputStream out = new ObjectOutputStream(fout);
        out.writeObject(f1);
    }

    public static void deSerialize() throws Exception {

        FileInputStream fin = new FileInputStream("test1.txt");
        ObjectInputStream in = new ObjectInputStream(fin);
        F f2 = (F) in.readObject();

        System.out.println(f2.e1.num);
        System.out.println(f2.j);
    }
}

class E implements Serializable {

    int num;
}

class F implements Serializable {
    E e1;
    int j;
}

//为什么我在本程序中遇到java.lang.NoSuchFieldError : num运行时错误。

1 个答案:

答案 0 :(得分:0)

我能想到的唯一解释是你编译了所有代码,然后从E中删除'num'并重新编译该类,然后执行程序。已经提到的所有其他方案都会导致不同的例外。

完整的堆栈跟踪会很有趣。请提供。将其编辑到您的问题中。