Serializable 接口的一个主要代价是,一旦类的实现被发布,它就会降低更改该类实现的灵活性。Serializable 接口的第二个代价是,增加了出现 bug 和安全漏洞的可能性Serializable 接口的第三个代价是,它增加了与发布类的新版本相关的测试负担。Serializable 接口并不是一个轻松的决定Serializable 接口,接口也很少情况适合扩展它。SerializabledefaultWriteObject, readObject 做的第一件事是调用 defaultReadObject,即使 StringList 的所有字段都是 transient 的列化的时候,对于客户端不应该拥有的对象引用,如果那个字段包含了这样的对象引用,就必须做保护性拷贝,这是非常重要的。
readResolve 进行实例控制,带有对象引用类型的所有实例字段都必须声明为 transient