我在阅读文件时遇到问题,将文本更改为对象,然后将其添加到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的未经检查的强制转换。通过论坛搜索有关此问题但似乎无法找到它
答案 0 :(得分:0)
这里没什么可做的。
ois.readObject();
的返回类型为对象;仅仅因为流不能知道任意流中的内容是什么。但是你告诉编译器:&#34;我认为它必须是一个ArrayList&#34;。编译器告诉你:&#34;你不能知道!&#34;
您可以使用instanceof
检查对象的类型,也可以使用注释来禁止显示警告。
如果对象实际上是instanceof ArrayList
,那么更安全的解决方案当然只能进行转换。
或者您可以(&#34;安全&#34;)忽略此警告。如您所知,您写入该文件的内容。但是如果你陷入困境,你就有可能在运行时出现异常。