2011-08-24 86 views
2

什麼是加載已使用標準的Java序列化API序列化類最簡單的方法?加載連載類

.class格式與Class<?>實例的序列化格式之間是否存在任何微不足道的關係?

回答

1

如果您在詢問是否可以序列化Class<?>對象,然後將該序列化文件作爲.class文件加載到ClassLoader中,那麼答案是否定的。

對象序列化意味着要保存的對象狀態作爲字節序列。這與字節碼不一樣。

0

你需要做的閱讀類文件,並轉換爲字節[],並將其寫入到文件中。

然後deserlalizing時,你需要從文件加載的byte [],並定義默認系統類加載器或自定義類加載器的類取決於你的需要。

1

有。類格式和一個類實例的 序列化形式之間的任何瑣碎的關係?

編譯時Serializable類得到一個稱爲的serialVersionUID(SUID)標識符。使用此版本的類序列化的每個對象也都會加上這個SUID。

什麼是加載已使用 標準Java序列化API序列化類最簡單的方法?

取決於你想要達到的目標,* .class文件就像你已經知道的那樣,由一系列字節中的字節代碼組成。對象不會複製字節代碼,因此您無法從序列化對象中恢復其類的字節序列。但是,您將serialVersionUID作爲序列化對象中的最後一個長變量。使用這些信息,您可以匹配* .class的相應版本。

但是那多難啊,你會遇到很多有趣的東西,而實際上實現這種「適應性」加載。