序列化包含对象java的对象

时间:2010-01-05 15:47:45

标签: java serialization object

我尝试序列化一个包含其他对象的对象,该对象本身是可序列化的。

有没有办法让它发挥作用?当我序列化第一个对象时,指向另一个对象的指针似乎丢失了。

7 个答案:

答案 0 :(得分:7)

以下是有关持久对象的两条规则:

  • 规则#1:要持久化的对象必须实现Serializable接口或从其对象层次结构继承该实现
  • 规则#2:要保留的对象必须标记所有不可序列化的字段

查看文章"Discover the secrets of the Java Serialization API"。它包括源代码和序列化过程的一个很好的解释。

源代码回答“如何序列化对象树?”也可以http://docs.oracle.com/javase/8/docs/technotes/guides/rmi/faq.html#tree

获取

要了解一些“幕后”的详细信息,请查看这篇优秀的文章:The Java serialization algorithm revealed

答案 1 :(得分:2)

“指针”确实丢失了。反序列化后,构造新对象。

在提供代码之前 - 检查第二个对象是否未定义为transient - 这将停止java序列化。

答案 2 :(得分:2)

Serializable对象的所有属性也应该被序列化,除非它们被定义为瞬态。

答案 3 :(得分:1)

只要一切都可以序列化,它应该可以正常工作。指针(我假设你指的是参考)被“丢失”是什么意思?

你能提供一个简短但完整的程序来证明这个问题吗?不可否认,Java二进制序列化有时可能很繁琐,但这应该可以很好地开箱即用。

答案 4 :(得分:0)

您可能会对使用SOJO感到满意。它很容易序列化Java对象的整个层次结构。

答案 5 :(得分:0)

我确实感觉一样,内部对象值也可以序列化,除非它被标记为瞬态。如果内部对象类不可序列化,那么它将抛出编译时错误。

请告诉我们您是否解决了问题以及我的理解是否错误。

答案 6 :(得分:0)

https://github.com/gadieichhorn/prototype-jpa

我创建了这个github项目,其中包含一些序列化到@Lob中 如果您有任何意见,请查看并告诉我。

  • maven
  • jpa - eclipse link - derby
  • slf4j - logback
  • junit - hamcrest

欢迎反馈。