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
..请告诉我如何转换它?
答案 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>
。