gpt4 book ai didi

java - 在方法所在的类中编码和解码序列化的 XML

转载 作者:行者123 更新时间:2023-11-29 09:14:29 25 4
gpt4 key购买 nike

我想不出一种描述它的方式,基本上我想知道是否可以编写一种方法使当前对象成为解码的序列化 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,这可能是应该的.

提前致谢。

最佳答案

好的,我已经设法解决了我的问题。 loadTillXML 需要一个返回方法 - Till - 这促使我认为它需要在 Till 外部调用。所以我用它代替了窗口中的 private Till till=new Till();

工作方式:

public static Till loadTillXML() {
try{
XMLDecoder decoder=new XMLDecoder(new BufferedInputStream(new FileInputStream("till.xml")));
return (Till) decoder.readObject();
}
catch(FileNotFoundException fNFE){
System.out.println("Cannot find file");
Till till=new Till();
return till;
}
}

关于java - 在方法所在的类中编码和解码序列化的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10362881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com