2016-12-02 67 views
0

我已经序列化一个ArrayList并将其存储到扩展名为.ser的文件中。我如何反序列化对象并将其存储回ArrayList中。我收到错误Note: Hw5b.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details.如何反序列化ArrayList中的对象<String[]> in java

//Serializing Object 
ArrayList<String[]> list = new ArrayList<String []>(); 
FileOutputStream fout = new FileOutputStream("movie-matrix2.ser"); 
ObjectOutputStream oos = new ObjectOutputStream(fout); 
oos.writeObject(list); 

//Deserializing Object 
FileInputStream streamIn = new FileInputStream("movie-matrix2.ser"); 
ObjectInputStream objectInputStream = new ObjectInputStream(streamIn); 
list = (ArrayList<String[]>)objectInputStream.readObject(); 

回答

1

这不是错误。这是一个警告。

有关详细信息,您可以使用-Xlint:unchecked对ecompile进行重新编译,就像消息所示。

但是你基本上什么都不能做,除了压制它:编译器警告你现在有办法确保你得到的列表是ArrayList<String[]>。只是它是一个ArrayList。

+0

有解决方法:例如投射到'(ArrayList )',然后根据需要投射各个元素。或者,避免序列化一个Collection,而不是写'list.toArray(new String [0] [])''。 – VGR

+0

是的,但这会使代码更复杂,而不会增加任何其他类型的安全性。 –