gpt4 book ai didi

java - 从文件读取列表时发生类转换异常

转载 作者:太空宇宙 更新时间:2023-11-04 13:54:51 24 4
gpt4 key购买 nike

我正在尝试将对象的状态保存在文件中。我有一个主题列表,并将它们写入文件中。我读回了这个对象。但是当我将它们放入列表中时,我得到了类转换异常。我可以看到该对象返回了所有值,但无法将它们转换为列表。

这是我的主题列表

private List<Subject> subjects;

FileOutputStream fileStream = new FileOutputStream("SaveFile", true);
ObjectOutputStream objectStream = new ObjectOutputStream(fileStream);
objectStream.writeObject(subjects);
objectStream.close();

这是我从文件中读取的代码

FileInputStream inStream = new FileInputStream("SaveFile");
ObjectInputStream obStream = new ObjectInputStream(inStream);
List<Subject> newSubjects = (List<Subject>)obStream.readObject();

这是一个异常(exception)

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to java.util.List at WebPageUpdateNotifier.Memento.getSavedData(Memento.java:43) at WebPageUpdateNotifier.Client.run(Client.java:66) at WebPageUpdateNotifierTest.ClientTest.testGetSubjectList(ClientTest.java:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

我做错了什么吗?我用谷歌搜索了很多,但发现语法是正确的。任何帮助将不胜感激。

最佳答案

我认为问题在于您正在附加到文件,而不是写入新内容。如果某个对象之前已序列化,然后序列化 List<Subject>通过附加到文件,然后在反序列化时您将获得旧对象。

尝试从 FileOutputStream 的构造函数调用中删除 boolean 参数:

FileOutputStream fileStream = new FileOutputStream("SaveFile");

而不是

FileOutputStream fileStream = new FileOutputStream("SaveFile", true);

关于java - 从文件读取列表时发生类转换异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29927616/

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