シリアライゼーションは、オブジェクト内のすべての変数を含むオブジェクトのインスタンスを保存するための簡単な方法であり、静的参照と transient キーワードでマークされたものを除くことを理解しています。
私は I/O が苦手で、私のアプリケーションには約 50 のクラスがあり、そのうち 3 つの異なるオブジェクト (オブジェクトを含む) があります。
たとえば、Animal Class、Employee Class、Vehicle Classがあります。実行時に、独自のサブクラス、メソッドなどを含むインスタンスオブジェクトを含むすべて。
私の質問は、シリアル化でこのすべての情報を保存する最も簡単な方法は何ですか? 私はこの問題を教授と話し合ったところ、彼はすべてに「手」を持ち、それをシリアライズする包括的なクラス「 Data.class 」のようなものを提案しました。これにより、参照するすべてのオブジェクトが .ser ファイルに保存されます。
「 Data.class」を作成してから、50 個すべてのクラスを作成してDataを拡張することを考えました。そして、保存メソッドに次のようなことをさせます
public void saveData(){
Data myData = new Data()
try
{
FileOutputStream fileOut =
new FileOutputStream("Data.ser");
ObjectOutputStream out =
new ObjectOutputStream(fileOut);
out.writeObject(myData);
out.close();
fileOut.close();
}catch(IOException i)
{
i.printStackTrace();
}
}
しかし、私はこれを機能させることができないようです。すべてのサブクラスのデフォルト値のみを含む Data の空のインスタンスを作成しているためだと思います。保存しようとしているときに関数を呼び出しています (対応するオブジェクトのすべての値が入力された後)。
どんな助けでも大歓迎です。3 つの異なるタイプのオブジェクトのすべてのインスタンスを手動でシリアル化する必要はありませんか? それは 300 を超えています。
また、Data に serialVersionID を指定し、Data のシリアル化可能なインターフェイスを実装しました。