在反序列化期间获得异常

时间:2014-11-22 16:25:41

标签: java

public List<Show> populateDataFromFile(String fileName)
 {
    List<Show> shows= null;
    try{
        ObjectInputStream in=new ObjectInputStream(new FileInputStream(fileName));
        shows= (List<Show>) in.readObject();
       in.close();

    }
    catch(Exception e)
    {
        e.printStackTrace();
    }


      return shows;

 }

我得到了java.lang.ClassCastException: com.bean.Show cannot be cast to java.util.List

我已执行反序列化以初始化已经序列化的show类的数据。我还通过实现可序列化的i / f使show class成为可序列化的。我认为readObject method无法转换为ArrayList ..请告诉我如何转换它?

2 个答案:

答案 0 :(得分:1)

您在文件中写的内容必须是Show类的实例,而不是List<Show>。 也许,而不是outputStream.writeObject(list);你做了for(Show show: list) outputStream.writeObject(show);之类的事情? 尝试以同样的方式阅读它:

List<Show> shows = new ArrayList<Show>();
try {
    while(true) {
        shows.add((Show) in.readObject());
} catch (EOFException e) {
   in.close();
   // end of file
}

答案 1 :(得分:0)

显然,您序列化的对象是Show的单个对象,而不是您期望的Show列表,尝试仅转换为Show或检查序列化和确保您序列化List<Show>