假设下面的场景。
忽略缺少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
?当然,它没有?
这应该如何运作?