, 就大大降低了"改变这个类的实现"的灵活性.如果你接受了默认的序列化形式, 这个类中私有的和包级私有的实例域将都变成导出的API的一部分, 这不符合"最低限度地访问域"的实践原则, 从而它就失去了作为信息隐藏工具的有效性...:它使这个类的导出API永远地束缚在该类的内部表示法上.消耗过多的空间.消耗过多的时间.会引起栈溢出.transient修饰符: 从序列化形式中省略掉实例域...., 则也必须在对象序列化上强制这种同步.不论你选择了哪种序列化形式, 都要为自己编写的每个可序列化的类声明一个显式的序列版本UID(serial version UID).除非你要破坏和所有已经存在的实例的兼容性...自从Java1.5以来, 它就不再是在可序列化的类中维持实例控制的最佳方法了.应该尽可能地使用枚举类型来实施实例控制的约束条件.但是如果这不可能做到, 或者你需要一个实现了序列化的实例受控的类, 那么你就必须提供一个...): 为可序列化的类设计一个私有的静态嵌套类(序列化代理), 它应该有一个单独的构造器, 其参数类型就是那个外围类.