为什么Java需要Serializable接口?
我们需要大量的序列化工作,并且必须在使用的每个对象上指定Serializable
标签,这是一种负担。特别是当它是第三方类时,我们不能真正更改。
问题是:由于Serializable
是一个空接口,并且Java一旦添加便提供了可靠的序列化 implements Serializable-
为什么它们不使所有内容都可序列化,仅此而已?
回答:
序列化充满陷阱。这种形式的自动序列化支持使类内部成为公共API的一部分(这就是javadoc为你提供类的持久化形式的原因)。
为了实现长期持久性,类必须能够解码这种形式,这限制了你可以对类设计进行的更改。这破坏了封装。
序列化也可能导致安全问题。通过能够序列化它所引用的任何对象,类可以访问它通常无法访问的数据(通过解析结果字节数据)。
还有其他问题,例如内部类的序列化形式定义不正确。
使所有类都可序列化将加剧这些问题。请查看有效的Java第二版,特别是项目74:明智地实现可序列化。
以上是 为什么Java需要Serializable接口? 的全部内容, 来源链接: utcz.com/qa/425778.html