JAVA - 加载基于对象的文件时遇到问题

JAVA - trouble with loading a object based file

我在从文本文件中读取对象时遇到一点问题,因为它会导致以下错误;

Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to stock.control.system.StockItem

这是哪一行;

StockItem result = (StockItem) ois.readObject();

以下是我保存文件的方式;

try { FileOutputStream fout = new FileOutputStream(filename);
    ObjectOutputStream oos = new ObjectOutputStream(fout);
    oos.writeObject(StockItems); }
    catch (java.io.FileNotFoundException error) {
        System.out.println("FILE NOT FOUND!");
    }

这是我到目前为止为将文件加载回对象 ArrayList 所做的工作;

  try {
        FileInputStream fis = new FileInputStream(filename);
        ObjectInputStream ois = new ObjectInputStream(fis);
        System.out.println("LOADING DATA ...");
        StockItem result = (StockItem) ois.readObject();
    ois.close();
        System.out.println(result.getItemID() + ", " + result.getItemDesc()
            + ", " + result.getPrice() + ", " + result.getQuantity() + ", "
            + result.getReOrderLevel()); // used for testing
    } catch (java.io.FileNotFoundException error) {
        System.out.println("FILE NOT FOUND!");
    } catch (IOException | ClassNotFoundException ex) {
        Logger.getLogger(StockArrayList.class.getName()).log(Level.SEVERE, null, ex);
    }

如果有任何地方可以教育我以便正确完成,将不胜感激。

看起来该文件不包含您认为的内容。它包含 ArrayList,而不是 StockItem。尝试获取数组列表的第一个元素:

StockItem result = (StockItem) ((ArrayList)ois.readObject()).get(0)

看看是什么类型。

错误说写入文件的是ArrayList。 看起来你写的 StockItemsArrayList<StockItem>。当你读的时候,你得到的是数组列表,所以你不能把它转换成StockItem。您需要将其转换为 ArrayList 然后遍历列表并将每个元素转换为 StockItem.

我只需要将输出分配给测试仪 class 中的数组列表,然后将其依次输入接口,然后从接口内部我必须将其分配给另一个数组列表,这是我是如何修复这个错误的。