それを説明する方法を考えることはできません。基本的に、メソッドを記述して現在のオブジェクトをデコードされたシリアル化されたXMLにすることができるかどうか疑問に思っています。
現在のTillオブジェクトの状態に一致するXMLファイルを生成するため、saveTillXMLが機能することはわかっています[ただし、デコードが失敗するため、実際に機能するかどうかはわかりません]。ただし、loadTillXML()メソッドを呼び出すと、次の例外が発生します。
- java.lang.reflect.InvocationTargetException
- java.lang.IllegalStateException
- java.lang.ArrayIndexOutOfBoundsException
ウィンドウを閉じたときにsaveTillXML()メソッドを呼び出し、TillのコンストラクターでloadTillXMLメソッドを呼び出します。
私は、Tillと、Tillが使用するすべてのクラスに、すべてのget&setsと引数のないコンストラクターを持っています。
public void saveTillXML() throws IOException{
XMLEncoder encoder=new XMLEncoder(new BufferedOutputStream(new FileOutputStream("till.xml")));
encoder.writeObject(this);
encoder.close();
}
public static void loadTillXML() throws IOException{
XMLDecoder decoder=new XMLDecoder(new BufferedInputStream(new FileInputStream("till.xml")));
decoder.readObject();
decoder.close();
}
私が考えることができる唯一のことは、decoder.readObject()
何も入らないという事実です。これは、現在のインスタンスをデコードするXMLにしたい場合におそらくそうなるはずです。
前もって感謝します。