, 就大大降低了"改变这个类的实现"的灵活性.如果你接受了默认的序列化形式, 这个类中私有的和包级私有的实例域将都变成导出的API的一部分, 这不符合"最低限度地访问域"的实践原则, 从而它就失去了作为信息隐藏工具的有效性...:它使这个类的导出API永远地束缚在该类的内部表示法上.消耗过多的空间.消耗过多的时间.会引起栈溢出.transient修饰符: 从序列化形式中省略掉实例域....构造器必须检查其参数的有效性, 并且在必要的时候对参数进行保护性拷贝.编写更加健壮的readObject()方法的指导方针:对于对象引用域必须保持为私有的类, 要保护性地拷贝这些域中的每个对象....对于一个正在被反序列化的对象, 如果它的类定义了一个readResolve方法, 并且具备正确的声明, 那么在反序列化之后, 新建对象上的readResolve方法就会被调用....在这个特性的绝大多数用法中, 指向新建对象的引用不需要再被保留, 因此立即成为垃圾回收的对象.可以利用readResolve方法保证单例模式. -> 方法忽略被反序列化的对象, 只返回该类初始化时创建好的那个实例