JAVA-加载基于对象的文件时遇到问题
我在从文本文件中读取对象时遇到了一些问题,因为它导致了以下错误:JAVA-加载基于对象的文件时遇到问题,java,file,object,save,load,Java,File,Object,Save,Load,我在从文本文件中读取对象时遇到了一些问题,因为它导致了以下错误: Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to stock.control.system.StockItem 这是哪一条线 StockItem result = (StockItem) ois.readObject(); 下面是我如何保存我的文件 try { FileOutputStre
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!");
}
这是我为far所做的,将文件加载回object 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
。尝试获取arraylist的第一个元素:
StockItem result = (StockItem) ((ArrayList)ois.readObject()).get(0)
然后查看这是什么类型。错误表明写入文件的是ArrayList。
看起来您编写的
StockItems
是ArrayList
。读取时,将返回数组列表,因此无法将其强制转换为StockItem
。您需要将其强制转换为ArrayList
,然后迭代列表并将每个元素强制转换为StockItem
,我只需将输出分配给tester类中的数组列表,然后该数组列表依次输入到一个接口中,并从接口中分配到另一个数组列表中,这就是我修复此错误的方法。什么是StockItems
?这是StockItem
实例吗?您序列化了类型为StockItem[]
的对象,并希望将未序列化的对象强制转换为类型为StockItem
?这必须失败。再次将其取消序列化为数组。看起来您正在编写arraylist“StockItems”,但正在尝试读取“StockItem”。请注意,如果它是StockItem
s的arraylist
,则可能无法完成此操作!您可能希望遍历列表并处理它们;[Item ID=P123,Item Description=1TB硬盘,价格=75.0,数量=267,重新订购级别=50]我将给出每个对象的迭代以立即保存它们=)是什么生成了该文件?如果它不是一个ObjectOutputStream
馈送给StockItem
,Java将不会将字符串重构为您将其强制转换到的任何对象。