5

わかりましたので、次のことを行いました。

  1. オブジェクトを ArrayList に追加し、リスト全体をオブジェクトとしてファイルに書き込みました。

  2. 問題は、それらを全体として読み戻そうとするときです。次のエラーが表示されます。

スレッド「メイン」での例外 java.lang.ClassCastException: java.util.Arrays$ArrayList は、persoana.Persona.main(Student.java:64) で java.util.ArrayList にキャストできません

これが私のコードです:(すべてがtry catchにあるので、心配する必要はありません)

書き込み

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

List問題は、をStudent介してを作成していることだと思いますArrays.asList。このメソッドは を返しませんArrayListArrays.ArrayList、別のクラスである を返します。これは、配列をバックアップし、それを として使用できるようにするためのものListです。どちらもインターフェースArrayListArrays.ArrayList実装しListていますが、同じクラスではありません。

適切なオブジェクトにキャストする必要があります。

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 に答える