我有一个桌面应用程序(不是Android),它允许我实例化一个类,改变它的内部状态,并将其序列化为一个文件(使用标准的Java序列化机制)。然后我将此文件复制到我单独的Android应用程序的资源中。我希望将此文件反序列化为与我的Android应用程序相同的类结构。
但是,桌面和Android类之间的数据成员略有不同,例如,我不能在Android中使用BufferedImage,而是必须使用Bitmap。
显然系统不会喜欢这样,所以因为它对我没有任何影响,所以我将这些特定的数据成员变为瞬态。在桌面上再次序列化之后,该文件仍未在Android上反序列化。我在执行时遇到ClassNotFoundException错误myclass = (MyClass)ois.readObject();
有没有人知道我是否可以通过编写自己的序列化函数来实现我的目标,或者我必须编写完全独立的序列化(没有Serializable / Externalizable)
答案 0 :(得分:0)
要解决此问题,您需要实现Externalizable并实现自己的序列化功能。这使您可以序列化和反序列化不同类中的相同数据。
但是,ClassNotFoundException是枚举类型序列化/反序列化错误的结果。