readObject的签名是:
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;
接受具体类类型的引用。
readExternal的签名是:
void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
接受接口类型的引用。
为什么这种差异呢?这只是一个疏忽吗?
答案 0 :(得分:2)
ObjectInputStream
有几种方法不在ObjectInput
中,专门用于支持默认的序列化机制。因此,序列化需要来自ObjectInputStream
,但外部化可以来自任何ObjectInput
。