2017-05-06 50 views
1

我在读取文件时遇到问题,将文本更改为对象,然后将其添加到数组列表中。将文件中的对象读入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(); 

这是说,从对象的一个​​未经检查的强制转换为ArrayList中。通过论坛搜索这个问题,但似乎无法找到它

+0

发布您的整个logcat – Kaushal28

+2

显然会有一个未经检查的转换,但您的问题是您在使用它之前关闭了输入流。 –

+0

这只是一个警告;忽略它。 – Bohemian

回答

0

这里没有太多的事情要做。

ois.readObject();确实有返回类型对象;只是因为流无法知道任意流中的内容。但是你告诉编译器:“我认为它必须是一个ArrayList”。编译器告诉你:“你不知道!”

您可以使用instanceof检查对象的类型,也可以使用注释来抑制警告。

更安全的解决方案当然只有在对象实际上是instanceof ArrayList时才能执行该操作。

或者您可以(“安全地”)忽略此处的警告。正如你知道你写入该文件的内容。但是如果你搞砸了,你可能会在运行时遇到异常。