2012-06-16 105 views
0

我有一個桌面應用程序(不是Android),它允許我實例化一個類,改變它的內部狀態,並將其序列化爲一個文件(使用標準的Java序列化機制)。然後我將這個文件複製到我單獨的Android應用程序的資源中。我希望將這個文件反序列化成我的Android應用程序中的同一個類結構。桌面和Android應用程序之間的類序列化

但是,桌面和Android類之間的數據成員略有不同,例如,我不能在Android中使用BufferedImage,而必須使用Bitmap。

很明顯,系統不會這樣,因爲它對我沒有任何影響,所以我讓這些特定的數據成員變成了暫時的。在桌面上再次序列化後,該文件仍然不會在Android上反序列化。我得到ClassNotFoundException的錯誤上執行

myclass = (MyClass)ois.readObject(); 

有誰知道我可以寫我自己的序列化功能,實現利用外部化我的目標,或將我寫的完全獨立的系列化(而不序列化/外部化)

+0

如果您有MyClass的ClassNotFoundException,只需將MyClass添加到您的應用程序。 – alehro

+0

並不那麼簡單。該錯誤可能是由於Java序列化認爲由readObject()創建的對象與MyClass對象不同,即使我已將有問題的數據成員設置爲transient。我認爲Externalizable將解決這個問題。現在就進行測試。 – Antinous

回答

0

爲了解決這個問題,你需要實現Externalizable並實現你自己的序列化函數。這使您能夠序列化和反序列化不同類中的相同數據。

但是,ClassNotFoundException是枚舉類型的序列化/反序列化不正確的結果。

相關問題