我想建立一个序列化ArrayList
个对象的函数,另一个函数反序列化ArryList
。也就是说,
public void serializeArrays(ArrayList<?> array,String className){
FileOutputStream fileOut= null;
ObjectOutputStream out=null;
try {
fileOut = new FileOutputStream("../Files/"+className+".ser");
out = new ObjectOutputStream(fileOut);
out.writeObject(array);
fileOut.close();
out.close();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
该代码将序列化ArrayList
的对象,是否意味着Arraylis
t的所有对象将被序列化,或者只是第一个对象,所以我有循环整个数组?
反序列化的问题是返回类型不能是ArrayList
,因为对象不是固定类,所以我让它返回Object
所以我会转换返回值。这是处理它的好方法吗?
public Object deserializeArrays(String className){
try {
FileInputStream fileIn = new FileInputStream("../Files/"+className+".ser");
ObjectInputStream in = new ObjectInputStream(fileIn);
return in.readObject();
}catch (FileNotFoundException e) {
e.printStackTrace();
}catch(IOException ie) {
ie.printStackTrace();
}catch(ClassNotFoundException ce) {
System.out.println(" "+className+" class not found");
ce.printStackTrace();
}
}
该代码中的问题是我无法关闭fileIn
&amp; in
,
如果我把它放在最后,报告错误说:
未报告的异常IOException;必须被抓住或宣布被抛出
还报告了另一个错误
错误:缺少返回语句
答案 0 :(得分:0)
该代码将序列化ArrayList的对象,是否意味着Arraylist的所有对象都将被序列化?或者只有第一个对象,所以我必须循环整个数组
如果该代码确实有效,序列化集合将序列化它所拥有的所有项目(前提是它们都是Serializeable
,否则会出现例外情况。)
反序列化的问题是返回类型不能是ArrayList,因为对象不是固定类,所以我返回Object类所以我会抛出返回值是处理它的好方法吗? / p>
列表中对象的类型并不重要。您可以通过强制转换将其反序列化为ArrayList
。
还报告了另一个错误
错误:缺少返回语句
因为您没有return
声明。您应该返回ArrayList
。