5

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

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

  2. 问题是当试图将它们作为一个整体读回来时。我收到以下错误:

线程“主”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();

阅读

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

             ArrayList <Student> ds;

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

             ois.close();

问题出现在这一行:

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

2 回答 2

9

我想问题是您正在创建Listof Studentthrough Arrays.asList。此方法不返回 anArrayList而是返回Arrays.ArrayList一个不同的类,旨在支持 Array 并能够将其用作List. 两者都ArrayList实现Arrays.ArrayListList接口,但它们不是同一个类。

您应该将其转换为适当的对象:

List<Student> ds = (List<Student>)ois.readObject();
于 2013-01-05T15:23:47.667 回答
4

更改以下行:

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

List<Student> ds = (List<Student>)ois.readObject();
于 2013-01-05T15:20:12.327 回答