我尝试序列化一个包含其他对象的对象,该对象本身是可序列化的。
有没有办法让它发挥作用?当我序列化第一个对象时,指向另一个对象的指针似乎丢失了。
答案 0 :(得分:7)
以下是有关持久对象的两条规则:
查看文章"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中 如果您有任何意见,请查看并告诉我。
欢迎反馈。