0

クラスをインスタンス化し、その内部状態を変更し、(標準の Java シリアル化メカニズムを使用して) ファイルにシリアル化できるデスクトップ アプリケーション (Android ではない) があります。このファイルを別の Android アプリのリソースにコピーします。このファイルを Android アプリと同じクラス構造にデシリアライズしたいと考えています。

ただし、たとえば、Android では BufferedImage を使用できず、代わりに Bitmap を使用する必要があるため、デスクトップ クラスと Android クラスの間のデータ メンバーにはわずかな違いがあります。

明らかにシステムはこれを好まないので、私には違いがないので、これらの特定のデータ メンバーを一時的なものにしました。デスクトップで再度シリアル化した後、ファイルは Android でまだ逆シリアル化されません。実行時に ClassNotFoundException エラーが発生します

myclass = (MyClass)ois.readObject();

独自のシリアライゼーション関数を作成することで Externalizable を使用して目標を達成できるかどうか、または完全に個別のシリアライゼーションを作成する必要があるかどうかを知っている人はいますか (シリアライズ可能/外部化可能なし)

4

1 に答える 1

0

この問題を解決するには、Externalizable を実装し、独自のシリアル化関数を実装する必要があります。これにより、異なるクラス内で同じデータをシリアライズおよびデシリアライズできます。

ただし、ClassNotFoundException は、列挙型の不適切なシリアル化/逆シリアル化の結果でした。

于 2012-06-16T22:43:08.560 に答える