-1

私はandroid.os.MemoryFileクラスを使用して、そのオブジェクトをシリアライズおよびデシリアライズしました。私が行ったことは、MyMemoryFile のようなカスタム クラス名を作成、これを MemoryFile クラスで拡張して、Serializable インターフェイスを実装することです。ReadBytes/WriteBytes などの MemoryFile クラス関数をオーバーライドします。次に、すべてのオブジェクトをバイト配列に変換し、バイト ArrayList に格納します。次に、すべてのバイト ArrayList 項目を文字列に変換して Mysql データベースに格納し、その逆も行いました。これを実行しましたが、オブジェクトを逆シリアル化すると例外が発生します

java.io.InvalidClassException: android.os.MemoryFile; IllegalAccessException

残念ながら、in.readObject() は上記のメッセージとともに InvalidClassException をスローします。

誰がこれを引き起こしているのか、それを修正する方法を知っていますか?

4

1 に答える 1

1

InvalidClassException は、それらのクラスのオブジェクトをデータベースに格納した後、クラス定義に違いがあることを意味します (メンバーに関しては、新しいメンバーが追加された可能性があります)。これらのクラスのオブジェクトを取得して逆シリアル化しようとすると、この問題が発生します。シリアル化可能なクラスで「serialVersionUID」を定義すると、問題はなくなります。

于 2013-12-25T18:59:56.223 に答える