2014-03-03 46 views
1

我目前不明白为什么我会选择序列化一个对象,而不是只做一个文件输出,然后让一个函数读取该文件。从序列化对象中获得什么?为什么我会序列化一个对象而不是做文件输出?

+0

这些都可以被认为是序列化。你如何坚持/重建对象状态的细节并没有真正定义序列化。例如,可以将对象序列化为YAML,XML或二进制文件,但所有这些都是序列化的形式。这实际上取决于您希望持久化数据的'人类可读'/便携性如何,以及您想花费多少时间在翻译逻辑上。 –

回答

2

使用经过W3C认可的数据交换格式,您几乎可以在几乎所有的编程语言中为读者和作者提供几乎全面的支持,从而获得了读取和写入对象数据的行业标准方式。

+0

你的答案比我的好。它应该是第一位的。 – rpax

1

序列化可以很容易地存储对象 和对象内部的状态(如果它们是Serializable而不是标记为transient)。

你的情况好处

想象一下,你有很多不同的类。也许编码的通用File-to-class解析器难度比readObject()

0

当你serializeobject,要复制的实际byte数据在内存中为stream。当你回传到objectde-serialize时,你会得到相同的对象,包括它的内部对象ID,如果你已经将对象的属性写入文件,然后再读入并解释它,则不会得到该ID。

这意味着,如果你serializeobjectsreference相互集合,当你de-serialize他们,他们将仍然维持其references给对方。这对调试程序也很好。如果发生异常,您可以在用户计算机上创建内存转储,并且如果它们将其发送给您,则可以直接看到内存中的内容以及可能导致的问题。

它也更容易serialize复杂object有许多属性为stream比它要建立一些string代表性的数据,你将有回读,分析和构建新的object它。

真的你得到的是,它更容易/更快,更好的调试。

相关问题