从文件中读取ArrayList作为对象?

Dni*_*ody 5 java io

好的,所以我做了以下事情:

  1. 我已经将对象添加到ArrayList并将整个列表作为对象写入文件.

  2. 问题在于尝试将它们作为一个整体读回来.我收到以下错误:

线程"main"中的异常java.lang.ClassCastException:java.util.Arrays $ ArrayList无法在persoana.Persoana.main(Student.java:64)强制转换为java.util.ArrayList

这是我的代码:(一切都在尝试捕获,所以没有什么可担心的)

写作

Student st1 = new Student("gigi","prenume","baiat","cti");
        Student st2= new Student("borcan","numegfhfh","baiat cu ceva","22c21");

        List <Student> studenti = new ArrayList<Student>();
        studenti = Arrays.asList(st1,st2);

FileOutputStream  fos = new FileOutputStream("t.ser");
            ObjectOutputStream oos = new ObjectOutputStream(fos);

            oos.writeObject(studenti);
            oos.close();
Run Code Online (Sandbox Code Playgroud)

FileInputStream fis = new FileInputStream("t.ser");
             ObjectInputStream ois = new ObjectInputStream(fis);

             ArrayList <Student> ds;

             ds = (ArrayList <Student>)ois.readObject(); 

             ois.close();
Run Code Online (Sandbox Code Playgroud)

问题出现在这一行:

ds = (ArrayList <Student>)ois.readObject();
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 9

我想,问题是,你正在创建的ListStudent通过Arrays.asList.这个方法不会返回一个ArrayList但是Arrays.ArrayList它是一个不同的类,意味着支持一个数组并且能够将它用作一个数组List.双方ArrayListArrays.ArrayList实现List接口,但它们不是同一类.

你应该把它投射到适当的对象:

List<Student> ds = (List<Student>)ois.readObject();
Run Code Online (Sandbox Code Playgroud)