想不出有什么办法来描述,基本上就是在想能不能写个方法让当前对象变成解码后的序列化XML。
我知道 saveTillXML 可以工作,因为它会生成一个与当前 Till 对象的状态匹配的 XML 文件 [但实际上我不知道它是否有效,因为解码失败]。但是,当我调用 loadTillXML() 方法时,我得到了这些异常:
- java.lang.reflect.InvocationTargetException
- java.lang.IllegalStateException
- java.lang.ArrayIndexOutOfBoundsException
我在窗口关闭时调用 saveTillXML() 方法,并在 Till 的构造函数中调用 loadTillXML 方法。
我在 Till 和 Till 使用的所有类中都有所有获取、设置和无参数构造函数。
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,这可能是应该的。
提前致谢。