私のクラスにセーブ/ロード機能が必要です。私は私が保存したいすべてのデータを保存するプライベートサブクラスを作成しました。Javaのメソッドでサブクラスオブジェクトをシリアライズ/逆シリアル化する
public class MyClass {
private class Progress implements Serializable {
private static final long serialVersionUID = 1L;
boolean val1 = true;
int val2 = 0;
ArrayList<String> list = new ArrayList<String>();
}
private Progress progress = new Progress();
public void loadProgress() {
progress = null;
try
{
FileInputStream fileIn = new FileInputStream("./tmp/progress.ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
progress = (Progress) in.readObject();
in.close();
fileIn.close();
}catch(IOException i)
{
i.printStackTrace();
return;
}catch(ClassNotFoundException c)
{
System.out.println("Progress class not found");
c.printStackTrace();
return;
}
}
public void saveProgress() {
try
{
File f = new File("./tmp/progress.ser");
f.getParentFile().mkdirs();
FileOutputStream outputstream = new FileOutputStream(f);
ObjectOutputStream out = new ObjectOutputStream(outputstream);
out.writeObject(progress);
out.close();
outputstream.close();
}catch(IOException i) {
i.printStackTrace();
}
}
}
しかし、私はこのコードを試してみたいとき、それはsaveProgress()メソッドでくれjava.io.NotSerializableException例外を与え、このために、loadProgress()メソッドは、あまりにも動作しません。どのように私はこのクラスをシリアル化できますか?