0

我有一个桌面应用程序(不是 Android),它允许我实例化一个类,改变它的内部状态,并将其序列化为一个文件(使用标准的 Java 序列化机制)。然后我将此文件复制到我单独的 Android 应用程序的资源中。我希望将此文件反序列化为与我的 Android 应用程序中相同的类结构。

但是,桌面类和 Android 类之间的数据成员略有不同,例如,我不能在 Android 中使用 BufferedImage,而必须使用 Bitmap。

显然系统不会喜欢这样,所以因为它对我没有任何影响,所以我将这些特定的数据成员设置为瞬态的。在桌面上再次序列化后,该文件仍然无法在 Android 上反序列化。执行时出现 ClassNotFoundException 错误

myclass = (MyClass)ois.readObject();

有谁知道我是否可以通过编写自己的序列化函数来使用 Externalizable 来实现我的目标,还是我必须编写完全独立的序列化(没有 Serializable/Externalizable)

4

1 回答 1

0

要解决这个问题,您需要实现 Externalizable 并实现自己的序列化函数。这使您能够序列化和反序列化不同类中的相同数据。

但是,ClassNotFoundException 是枚举类型的不正确序列化/反序列化的结果。

于 2012-06-16T22:43:08.560 回答