【问题标题】:How do I deserialize Objects from a file into a list?如何将文件中的对象反序列化为列表?
【发布时间】:2021-11-05 00:25:15
【问题描述】:

我正在尝试从文件中反序列化平面对象,但出现此错误:

java.lang.ClassCastException:无法将 hausverwaltung.EigentumsWohnung 类强制转换为 java.util.List 类(hausverwaltung.EigentumsWohnung 在加载器“app”的模块 hausverwaltung 中;java.util.List 在加载器的模块 java.base 中'引导')

这是我的代码:

public List<Flat> getFlats() {
    List<Flat> flats = new ArrayList<Flat>();

    try {
        ObjectInputStream reader;
        reader = new ObjectInputStream(new FileInputStream(file));
        flats = (List<Flat>) reader.readObject();
        reader.close();
    } catch (Exception e) {
        System.out.println("Deserialisation error: "+e);
        System.exit(1);
    }

    return flats;
}

这是我们在课堂上学习的方式,但不知何故我得到了这个错误。 我整天都在寻找解决方案,但没有找到任何解决方案……我该如何解决这个问题?

【问题讨论】:

  • 你正在将 Flat 投射到 List
  • 要反序列化对象列表,您需要先序列化对象列表,而不是单个对象。
  • 谢谢!我认为现在它可以工作了

标签: java


【解决方案1】:

reader.readObject 读取一个对象。在你的情况下,一个Flat

您正在将单个 Flat 转换为 List&lt;Flat&gt;,这会导致您的异常。

要实现您的目标,您应该逐个读取对象并将它们添加到列表中,然后返回列表。

【讨论】:

  • 我试过了,但后来我得到一个 EOFException..
  • 你确定文件正确吗?
  • @philimilli 您需要先检查输入是否有另一个条目
【解决方案2】:

这样试试

flats= (Flat) reader.readObject();

如果每个文件有一个对象,它将起作用。

编辑:这里是something

【讨论】:

  • 但是我从 Flat 转换到 List 是行不通的
  • 请看编辑
猜你喜欢
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多