我有一個桌面應用程序(不是Android),它允許我實例化一個類,改變它的內部狀態,並將其序列化爲一個文件(使用標準的Java序列化機制)。然後我將這個文件複製到我單獨的Android應用程序的資源中。我希望將這個文件反序列化成我的Android應用程序中的同一個類結構。桌面和Android應用程序之間的類序列化
但是,桌面和Android類之間的數據成員略有不同,例如,我不能在Android中使用BufferedImage,而必須使用Bitmap。
很明顯,系統不會這樣,因爲它對我沒有任何影響,所以我讓這些特定的數據成員變成了暫時的。在桌面上再次序列化後,該文件仍然不會在Android上反序列化。我得到ClassNotFoundException的錯誤上執行
myclass = (MyClass)ois.readObject();
有誰知道我可以寫我自己的序列化功能,實現利用外部化我的目標,或將我寫的完全獨立的系列化(而不序列化/外部化)
如果您有MyClass的ClassNotFoundException,只需將MyClass添加到您的應用程序。 – alehro
並不那麼簡單。該錯誤可能是由於Java序列化認爲由readObject()創建的對象與MyClass對象不同,即使我已將有問題的數據成員設置爲transient。我認爲Externalizable將解決這個問題。現在就進行測試。 – Antinous