将文件中的对象读入arraylist

时间:2017-05-06 14:42:31

标签: java serialization arraylist deserialization

我在阅读文件时遇到问题,将文本更改为对象,然后将其添加到arraylist中。

这是我的读写文件代码

public class ReadWrite {

    public void save(String filename, ArrayList<Sale> buildings) throws IOException{
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename));
        oos.writeObject(buildings);
        oos.close();
    }
    public ArrayList<Sale> load(String filename) throws ClassNotFoundException, IOException {
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename));
        buildings = (ArrayList<Sale>)ois.readObject();
        ois.close();
        return buildings;
    }
}

问题是

buildings = (ArrayList<Sale>)ois.readObject();

它说它是从Object到ArrayList的未经检查的强制转换。通过论坛搜索有关此问题但似乎无法找到它

1 个答案:

答案 0 :(得分:0)

这里没什么可做的。

ois.readObject();的返回类型为对象;仅仅因为流不能知道任意流中的内容是什么。但是你告诉编译器:&#34;我认为它必须是一个ArrayList&#34;。编译器告诉你:&#34;你不能知道!&#34;

您可以使用instanceof检查对象的类型,也可以使用注释来禁止显示警告。

如果对象实际上是instanceof ArrayList,那么更安全的解决方案当然只能进行转换。

或者您可以(&#34;安全&#34;)忽略此警告。如您所知,您写入该文件的内容。但是如果你陷入困境,你就有可能在运行时出现异常。