一,应在所有类型安全的枚举以及所有支持单例设计模式的类中添加readResolve方法
二,如果一个类具有名为serialVeisionUID的静态数据成员,它就不再需要人工的计算其指纹,而只需直接使用这个值
三,再指定指纹后,如果这个类只有方法发生了变化,再读入新对象数据时是不会有任何问题的,如果数据域发生了变化,那么就可能有问题,在这种情况下对象输入流将尽力将流对象装换成这个类的当前版本。
对象输入流会将这个类当前版本的数据域与被序列化版本中的数据域进行比较,对象流只会考虑非瞬时transient和非静态的数据域。如果这两个数据域之间名字匹配而类型不匹配,那么对象输入流不会尝试将 一种类型转换为另一种类型,因为这两个对象不兼容;如果序列化对象具有当前版本中没有的数据域,那么对象输入流会忽略这些额外的数据;如果当前版本具有序列化对象中所没有的数据域,那么这些数据 会被设置成默认值(对象为null,数据为0,boolean为false).
四:readObject方法中实现额外的代码去订正版本不兼容的问题(确保所有的方法在处理null数据时都健壮)
五:扩:为克隆对象使用对象流。