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。
看起来你写的 StockItems
是 ArrayList<StockItem>
。当你读的时候,你得到的是数组列表,所以你不能把它转换成StockItem
。您需要将其转换为 ArrayList
然后遍历列表并将每个元素转换为 StockItem
.
我只需要将输出分配给测试仪 class 中的数组列表,然后将其依次输入接口,然后从接口内部我必须将其分配给另一个数组列表,这是我是如何修复这个错误的。
我在从文本文件中读取对象时遇到一点问题,因为它会导致以下错误;
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。
看起来你写的 StockItems
是 ArrayList<StockItem>
。当你读的时候,你得到的是数组列表,所以你不能把它转换成StockItem
。您需要将其转换为 ArrayList
然后遍历列表并将每个元素转换为 StockItem
.
我只需要将输出分配给测试仪 class 中的数组列表,然后将其依次输入接口,然后从接口内部我必须将其分配给另一个数组列表,这是我是如何修复这个错误的。