如何在自定义序列化中读取嵌套对象?

时间:2015-12-09 20:50:17

标签: java serialization

假设下面的场景。

忽略缺少serialVersionUID。这只是示例代码。

class A implements Serializable {

    int test;
    B b;

    private void writeObject(ObjectOutputStream s) throws IOException {
        s.writeInt(test);
        s.writeObject(b);
    }

    private void readObject(ObjectInputStream s) throws IOException {
        this.test = s.readInt();
        this.b = (B) s.readObject(); // <-- HERE
    }
}

class B implements Serializable {

    // some fields here

    private void writeObject(ObjectOutputStream s) throws IOException 
    {/* this doesn't matter */}

    private void readObject(ObjectInputStream s) throws IOException 
    {/* this doesn't matter */}
}

我想知道如何(或是否)标有&#34; HERE&#34;实际上是有道理的(或者为什么没有)。

JVM如何知道它应该使用B的自定义读取方法来取消序列化B?当然,它没有?

这应该如何运作?

0 个答案:

没有答案