8

例如,如果对象实例被序列化(导致'byte [] bs1')然后再次序列化(导致'byte [] bs2'),'bs1'和'bs2'应该是相同的长度并包含相同的字节? 如果不是,为什么不呢?

为避免歧义,我应该说同一个对象的两个序列化(不是两个“相同”对象 - 同一个实例),在同一个线程中,在同一个 JVM 上,彼此在几毫秒内发生 - 一个在(可变) 对象被传递给一个方法,一个之后。

请注意,该对象甚至没有被序列化、反序列化和重新序列化——它只是被序列化了两次。此外,对象的类一点也不“聪明”。它只是一个简单的聚合 POJO。

我使用序列化字节作为临时测试来检测对象是否在方法内部发生了更改。但是,我似乎看到了对象显然没有改变其状态的例子——但是一个字节[] 与另一个不同。

我假设——这只是一个假设——它们是一样的。他们可能不是有什么原因吗?

附录:

另外,很抱歉没有示例代码来说明这一点。目前,这是嵌入在大型系统中的一小段代码。如有必要,我将尝试提取一个较小的、可运行的演示。我想知道我的假设是否存在基本问题,因此是否有人可以解释为什么这个假设是错误的。

4

1 回答 1

5

它可能并不总是与通过序列化产生的完全相同的字节序列。例如,Set序列化其元素的顺序不能保证是恒定的,即使我们谈论的是单个实例。

于 2013-06-21T17:35:53.837 回答