2010-01-05 59 views
3

我嘗試序列化包含本身可序列化的其他對象的對象。序列化包含對象的對象java

有沒有辦法讓它工作?當我序列化第一個對象時,指向另一個對象的指針似乎丟失了。

+4

是的,它應該工作,如果兩個對象實現Serializable。一些代碼,請! – 2010-01-05 15:49:58

+5

給我們展示了一些代碼。 – rodrigoap 2010-01-05 15:51:09

回答

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

+0

提供的鏈接不再可用。 :( – abksrv 2015-03-17 05:17:42

+0

鏈接更新... – JuanZe 2015-03-17 14:44:36

1

它應該工作得很好,只要所有東西都是可序列化的。指針(我假定你指的是參考)指的是什麼意思是「丟失」?

您能否提供一個簡短但完整的程序來演示問題?誠然,Java二進制序列化有時可能會很煩瑣,但這應該可以很好地工作。

2

「指針」確實丟失了。反序列化後,構建新的對象。

在提供代碼之前 - 檢查第二個對象是否未定義爲transient - 這會停止java序列化。

2

Serializable對象的所有屬性都應該被序列化,除非它們被定義爲transient。

0

您可能會很高興使用SOJO。它很容易地序列化Java對象的整個層次結構。

0

我完全同樣感覺,內部對象的值也是可序列化的,除非它被標記爲瞬態。如果內部對象類不可序列化,那麼它會引發編譯時錯誤。

請讓我們知道,如果你確實解決了它,如果我的理解是錯誤的。

0

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

我創造了這個項目的GitHub包括一些串行化爲@Lob 請檢查出來,並讓我知道如果您有任何意見。

  • 行家
  • JPA - 日食鏈接 - 德比
  • SLF4J - 的logback
  • 的JUnit - hamcrest

反饋歡迎。

相關問題