0

objectInputStream を使用してファイルからデータを読み取るときに問題が発生しました。以下のコードを見つけてください

File file = new File("model.pst")       
if (file.exists()) {
            fis = new FileInputStream(file);
            in = new ObjectInputStream(fis);
            input = (List<GlobalModel>) in.readObject();
            in.close();
        }

ObjectOutputStream http://docs.oracle.com/javase/6/docs/api/java/io/ObjectOutputStream.htmlドキュメントから、オブジェクトをファイルに書き込んでいるときに、オブジェクトのデフォルトのシリアル化メカニズムを知りました。オブジェクトのクラス、クラス シグネチャ、すべての非一時的および非静的フィールドの値を書き込みます。オブジェクトをファイルに書き込んだ後、上記のコードを使用すると、クラス名が変更されるという問題があります。値を読み取るには、classNotFound 例外をスローします。方法があるかどうか知りたいのですが、この例外を処理できます。つまり、例外ブロックになると、読み込まれているオブジェクトのクラス名を新しいクラス名に置き換えて機能させることができますか?

手伝ってください。前もって感謝します

4

1 に答える 1

0

私はこれを自分で行ったことはありませんが、オブジェクト入力ストリームのサブクラスを作成し、resolveClass メソッドをオーバーライドすることで、クラスを別のクラスに置き換えることができるはずですhttp://docs.oracle.com/javase/6/docs/api/ java/io/ObjectInputStream.html#resolveClass(java.io.ObjectStreamClass)

于 2013-07-26T10:47:08.743 に答える