序列化Serializable和Externalizable的区别(二)

2015-01-27 14:01:17 · 作者: · 浏览: 47
tring[] args) throws IOException,
  • ClassNotFoundException {
  • FooImpl fooimpl = new FooImpl();
  • fooimpl.serialize();
  • }
  • }
    我们运行这段代码看到的debug信息:
    writeReplace invoked
    writeExternal invoked
    readExternal invoked
    readResolve invoked
    在此writeExternal 和readExternal 的作用与writeObject和readObject 一样.

    最后,当我们同时实现了两个interface的时候,JVM只运行Externalizable 接口里面的writeExternal 和readExternal 方法对序列化内容进行处理.
    需要注意的是:Serializable是一个真正的mark interface,
    writeObject,readObject, writeReplace,readResolve是直接与JVM通信,告诉JVM序列化的内容.