Tag: 标识

序列化是否保留对象标识?

我使用Java Serializable接口和ObjectOutputStream来序列化对象(到目前为止,这个方法已经足够我的目的)。 我的API依赖于某些操作的对象标识,我想知道它是否会被序列化保留。 也就是说: 如果,对于两个任意对象a和b ,它在序列化之前保持a == b ,它在反序列化后是否仍然保持? 我发现了一些声称相反的文本 – 但他们要么写了一个旧版本的JRE(我只对1.6感兴趣,也许是1.5),或者关注RMI(这与我无关)。 有关对象标识的文档不是很明确。 sun.com上的一篇技术文章提到ObjectOutputStream在对象上使用缓存,这对我来说只有在确实保留了对象标识时才有意义,但我没有足够的信心依赖这些脆弱的证据。 我已经尝试过(Java 1.6,OS X)并发现是的 , 对象的身份通过序列化保持不变 。 但是,我可以从这些结果中推断出来还是不可靠? 对于我的测试,我已经序列化了以下对象图: C———-+ | b1 b2 | +———-+ | | vv B—+ B—+ | a | | a | +—+ +—+ \ / \ / \/ A—-+ | | +—-+ 最小的再现代码: import java.io.*; public class […]