使用ObjectInputStream将对象存储在ArrayList中

时间:2018-04-07 20:03:41

标签: java object arraylist io stream

我想带#34;计算机"来自" computers.dat"的对象将文件放入ArrayList中,然后调用computer.toString()方法显示它们。

这是我的代码:

the type parameter `H` is not constrained by the impl trait, self type, or predicates

对于记录,计算机类已经实现了Serializable接口,以防您想知道这是否是问题

当我运行程序时,我遇到了这些错误:

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

public class ReadComputers {

public static void main(String[] args) throws ClassNotFoundException, IOException {

    FileInputStream fis = new FileInputStream("computers.dat");
    ObjectInputStream ois = new ObjectInputStream(fis);

    ArrayList <Computer> comp;
    comp = (ArrayList <Computer>)ois.readObject(); 


  for (int i = 0; i < comp.size(); i++) {
      String computer = comp.get(i).toString();
      System.out.println(computer);
  }
    ois.close();
 }
}

1 个答案:

答案 0 :(得分:-1)

以下是我如何使用它:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;

public class ReadComputers {


    public static void main(String[] args) throws ClassNotFoundException, IOException {

try{

            FileInputStream fis = new FileInputStream("computers.dat");
            ObjectInputStream ois = new ObjectInputStream(fis);
            Object obj = ois.readObject();
            ArrayList<Computer> computers = (ArrayList<Computer>) obj;

            for (Computer c : computers) {
                System.out.println(c.toString());
                System.out.println();
            }
        }
        catch (FileNotFoundException e){

            e.printStackTrace();
        }
        catch (IOException e){

            e.printStackTrace();
        }
        catch (ClassNotFoundException e){

            e.printStackTrace();
        }

    }
}

我从网络上的几个不同来源和我的教科书中借用了代码,但对于那些对这里的答案感到好奇的人来说,它是。感谢所有帮助过的人。