我们大量地进行序列化工作,并且必须在我们使用的每个对象上指定可序列化标签是一种负担。尤其是当它是我们无法真正更改的第 3 方类时。
问题是:由于 Serialized 是一个空接口,一旦添加,Java 就会提供健壮的序列化implements Serializable
- 为什么他们不让所有东西都可序列化,仅此而已?
我缺少什么?
序列化充满了陷阱。这种形式的自动序列化支持使类内部成为公共 API 的一部分(这就是 javadoc 为您提供类的持久形式 http://java.sun.com/javase/6/docs/api/serialized-form.html#java.net.URL).
为了长期持久化,类必须能够解码这种形式,这限制了您可以对类设计进行的更改。这破坏了封装。
序列化还会导致安全问题。通过能够序列化它所引用的任何对象,类可以访问它通常无法访问的数据(通过解析生成的字节数据)。
还有其他问题,例如内部类的序列化形式没有很好地定义。
使所有类可序列化会加剧这些问题。查看有效的Java第二版 http://java.sun.com/docs/books/effective/, 尤其第 74 条:明智地实现 Serialized.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)