Thinking in java 琐碎知识点之 I/O流 、对象序列化(三)

2014-11-23 21:43:47 · 作者: · 浏览: 32
返回另一个Java对象,
系统转为序列化另一个对象。
小结:系统在序列化某个对象之前,先会调用该对象的如下两个方法:
writeReplace和writeObject,系统先调用被序列化对象的writeReplace方法,如果返回另一个Java对象,则再次调用该java对象的writeReplace方法....
直到该方法不在返回一个对象为止,程序最后调用该对象的writeObject方法来保存该对象的状态


与writeReplace方法相对的有一个方法可以替代原来反序列化的对象
即:private Object readResolve() throws ObjectStreamException;
这个方法会紧接着readObject之后被立即调用,该方法的返回值会代替原来反序列化的对象,而原来readObject反序列化的对象会被立即丢弃
(此方法在序列化单例类、早期枚举类时很有用)


14、另一种序列化机制:Java类实现Externalizable接口

两种序列化机制的区别:


实现Serializable接口 实现Externalizable接口

系统自动存储必要信息 程序员决定需要存储哪些信息
Java内建支持,易于实现只需实现该接口即可 仅仅提供两个空方法实现该接口必须为两个空方法提供实现
无须任何代码支持 类中必须存在一个无参构造方法
性能略差 性能略高