1

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;


}

別のタイプのオブジェクトをシリアル化するために同じメソッド(ただし変数は異なります)を使用しますが、そのメソッドは非常にうまく機能します。どこが悪いのかわからない!

4

1 に答える 1