java序列化中最便宜的标记?

时间:2015-06-02 16:01:03

标签: java serialization

我使用ObjectOutputStream的writeObject方法来序列化树。树的数据类型是通用的,可以是整数以及复杂的“Student”对象。但我需要'标记'一个空指针,一个指针,我将用它来标记离开节点。 例如:

  if (node.item == null) {
     oos.writeObject('SOMEMARKER');
     return;
  }

我的问题是标记空的最便宜(空间明智)方式是什么? EG:使用布尔值? 例如:oos.writeObject(true)?

1 个答案:

答案 0 :(得分:3)

标记null的最简单方法是使用null。

oos.writeObject(null);

您可以使用布尔值进行标记,但writeObject(true)使用的空间不仅仅是传递null

if (node.item == null) {
    oos.writeByte(0);
} else {
    oos.writeByte(1);
    oos.writeObject(note.item);
}

// to read
Item item = ois.readByte() == 0 ? null : (Item) ois.readObject();

但是,由于你使用的Java Serailization效率非常低,所以我不会担心它并保持简单。

oos.writeObject(item.node);

// to read
Item item = (Item) ois.readObject();