Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从文件读取保存的数组列表(对象)时发生类强制转换异常_Java_Arraylist_Classcastexception_Objectinputstream - Fatal编程技术网

Java 从文件读取保存的数组列表(对象)时发生类强制转换异常

Java 从文件读取保存的数组列表(对象)时发生类强制转换异常,java,arraylist,classcastexception,objectinputstream,Java,Arraylist,Classcastexception,Objectinputstream,我想将数据从文件中实际读取到Flight\u注册表类的数组列表中。我可以将数组列表保存在文件中,但当我尝试从文件中读取时,它不起作用,并导致类强制转换异常。我还试图直接获取数组列表中的值,但没有成功。 您能告诉我应该写什么来将数据从文件读取到数组列表中吗 try { ObjectInputStream ois = new ObjectInputStream(new FileInputStream(" Flight Registrie.bin")); Flight_registr

我想将数据从文件中实际读取到
Flight\u注册表
类的数组列表中。我可以将数组列表保存在文件中,但当我尝试从文件中读取时,它不起作用,并导致类强制转换异常。我还试图直接获取数组列表中的值,但没有成功。 您能告诉我应该写什么来将数据从文件读取到数组列表中吗

try {
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(" Flight Registrie.bin"));

    Flight_registrie b =(Flight_registrie) ois.readObject();
    alr.add(b);
    ois.close();
} catch (FileNotFoundException e) {
    System.out.println("\t\t\tFile not Found.");    
} catch (IOException e) {
    System.out.println("An I/O error occurs");
} catch (ClassNotFoundException e) {
    System.out.println("\t\tClass Flight_registrie not found ");
}
下面的代码是我如何接受输入的

try {al.add(a);
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(" Flight Registrie.bin"));
    oos.writeObject(al);
    System.out.println("Data Saved");
    al.clear();
oos.close();
} catch (IOException e) {
System.out.println("An I/O error occurs");
}
错误:

线程“main”java.lang.ClassCastException中的异常:类 无法将java.util.ArrayList强制转换为类 source\u module.Flight\u注册表(java.util.ArrayList位于模块中 加载程序“bootstrap”的java.base;source__module.Flight_注册表位于 加载程序“app”的未命名模块) 在source\u module.Functions.get\u数据(Functions.java:64) 位于file.Launcher.main(Launcher.java:41)
您似乎正在文件中保存列表。但在阅读时,你正在试图将一份清单读入航班登记簿

这就是为什么在尝试将ArrayList对象强制转换为Flight_registrie类的和对象时出现错误的原因。故障线路为:

 Flight_registrie b =(Flight_registrie) ois.readObject();
尝试将其更改为:

List<Flight_registrie> b =(List<Flight_registrie>) ois.readObject();
listb=(List)ois.readObject();

这应该可以解决问题。

看起来您的代码试图读取的是
Flight\u registrie
对象,而不是
ArrayList
。是的,但如何从文件中读取数组列表,似乎您写入了文件ArrayList,但读取了列表项。您需要用序列化代码更新问题。我编辑了另一个代码,它显示了我是如何接受输入的。那个么我应该从文件中读什么呢?若你们写一个香蕉,你们必须读一个香蕉。不是苹果。不是一盒香蕉。如果要读取注册表,必须编写注册表。如果你写一个ArrayList,你必须读一个ArrayList。你应该首先读一个类的对象,这个类的对象是在文件中写的。默认情况下,当文件实现可序列化时,可以从文件中写入和读取列表。