Doodle というオブジェクトがあり、それを文字列にシリアル化して問題ありません。オブジェクトをデシリアライズしようとすると問題が発生します。エラーは次のとおりです。 java.io.InvalidClassException: java.util.ArrayList; ローカル クラスに互換性がありません: ストリーム classdesc serialVersionUID = 8664875232659988799、ローカル クラス serialVersionUID = 8683452581122892189
シリアライズとデシリアライズの方法は次のとおりです。
public static String serDoodle(Doodle dood){
String serializzato = null;
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
ObjectOutputStream so = new ObjectOutputStream(bo);
so.writeObject(dood);
so.flush();
serializzato = bo.toString();
so.close();
bo.close();
} catch (Exception e) {
System.out.println(e);
}
return serializzato;
}
public static Doodle deserDoodle(String deserializza){
Doodle dod = new Doodle();
try {
byte[] b = deserializza.getBytes();
ByteArrayInputStream bi = new ByteArrayInputStream(b);
ObjectInputStream si = new ObjectInputStream(bi);
dod=(Doodle) si.readObject();
si.readObject().getClass();
si.close();
bi.close();
} catch (Exception e) {
System.out.println("deserDoodle "+e);
}
return dod;
}
別のタイプのオブジェクトをシリアル化するために同じメソッド(ただし変数は異なります)を使用しますが、そのメソッドは非常にうまく機能します。どこが悪いのかわからない!