2012-04-30 78 views
1

爲對象的默認序列化機制寫入的 的對象的類,類簽名,以及所有的非暫時性 和非靜態字段的值爪哇 - 對象的缺省序列

  1. 這裏的「對象類」和「類簽名」有什麼不同嗎?
  2. 由於「Class Signature」和「Class」也通過了,JVM是否加載目標系統上的默認類? (或)在序列化對象中傳遞的類?
+0

你對「默認班級」有什麼意思?沒有默認類。 –

+0

即時猜測在這裏,但我認爲該類可能是例如one/package/MyClass $ AnInnerClass和簽名會說如果它的公共,它的擴展/實現等等。有誰能證實這一點? – jambriz

回答

3

短語「寫入對象的類別」的意思是「寫入對象的類別名稱」。 java對象的序列化不會寫入類的字節,只能是類的名字。當對象稍後反序列化時,它將使用當前jvm中定義的類字節。

0

您不存儲某種類型的序列化類定義,只是您序列化的實例的內容。反序列化時,JVM將使用它在其類路徑中找到的類定義。

所以你必須要了解how versionning works ...

0

我相信「類簽名」應該指的是類的(和serialisable超)字段名和類型,以及串行版本UID。

默認情況下,ObjectInputStream將在「latest」類加載器(即調用堆棧中最靠近的非引導類加載器)中查找類名稱。使用指定的類加載器進行明智的子類查找。默認情況下(通過系統屬性關閉它),RMI會找到位置(URL),以便從嵌入在流中的註釋中加載新類。