1

我想实现java.io.Externelizable它本质上说做任何java.io.Serializable会做一些修改。Java 序列化机制中有哪些钩子(如果有)?或者,是否有任何外部库可以以开放/可扩展的方式准确模拟 Java 序列化机制?

4

1 回答 1

3

您不需要java.io.Externalizable对序列化进行小的自定义。只需java.io.Serializable像以前一样实现,在类中实现以下两个方法:

private void writeObject(ObjectOutputStream oos) {
    oos.defaultWriteObject();
    // custom serialization
    oos.writeInt(notSerializableObj.getId());
}

private void readObject(ObjectInputStream ois) {
    ois.defaultReadObject();
    // custom de-serialization
    notSerializableObj = new NotSerializableObj(ois.readInt());
}

java.io.Externalizable当您出于性能或安全原因想要完全更改对象的序列化方式(底层算法本身)时,主要使用它。

于 2013-07-17T22:23:51.027 回答