用于序列化arraylist的函数和另一个用于反序列化的函数

时间:2016-09-16 23:15:55

标签: java serialization arraylist

我想建立一个序列化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;必须被抓住或宣布被抛出

还报告了另一个错误

  

错误:缺少返回语句

1 个答案:

答案 0 :(得分:0)

  

该代码将序列化ArrayList的对象,是否意味着Arraylist的所有对象都将被序列化?或者只有第一个对象,所以我必须循环整个数组

如果该代码确实有效,序列化集合将序列化它所拥有的所有项目(前提是它们都是Serializeable,否则会出现例外情况。)

  

反序列化的问题是返回类型不能是ArrayList,因为对象不是固定类,所以我返回Object类所以我会抛出返回值是处理它的好方法吗? / p>

列表中对象的类型并不重要。您可以通过强制转换将其反序列化为ArrayList

  

还报告了另一个错误

     
    

错误:缺少返回语句

  

因为您没有return声明。您应该返回ArrayList