代码之家  ›  专栏  ›  技术社区  ›  ZZ Coder

Java序列化:readFields/putFields与序列化映射

  •  0
  • ZZ Coder  · 技术社区  · 16 年前

    目前,我们将用户的会话对象序列化到数据库中,但该对象最近更改太多,因此我们决定重新设计此过程。我们都同意不能序列化整个对象,需要逐个字段地保存它。有两项建议,,

    1. 使用 ObjectOutputStream.putFields() .

    fields.get("confirmed", false)

    我们倾向于用1。有人知道#2的其他好处吗?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Tom Hawtin - tackline    16 年前

    readFields putFields 这样做的好处是,您可以从使用默认序列化开始,并且只在需要时添加样板文件。

    A. Map / 普特菲尔德 . 这是因为描述流的格式有一次开销。

    defaultReadObject 读字段 readObject defaultWriteObject / 普特菲尔德 年初 writeObject . 不幸的是,这没有被检查。

        2
  •  0
  •   Ravi Wallau    16 年前

    this 通过在类中实现两个名为writeObject(ObjectOutputStream)和readObject(ObjectInputStream)的私有方法,可以自定义如何读取和写入值。检查上面站点上的“自定义默认协议”会话。这可能是首选方法,如果我没记错的话,也是《有效Java》一书中描述的推荐方法。

    通过这样做,您可以维护在包含字段的类中应该读/写哪些字段的逻辑,这是更好的封装。

    推荐文章