Java 在反序列化期间获取异常 public List populateDataFromFile(字符串文件名) { 列表显示=null; 试一试{ ObjectInputStream in=新ObjectInputStream(新文件输入流(文件名)); 在.readObject()中显示=(列表); in.close(); } 捕获(例外e) { e、 printStackTrace(); } 回归演出; }

Java 在反序列化期间获取异常 public List populateDataFromFile(字符串文件名) { 列表显示=null; 试一试{ ObjectInputStream in=新ObjectInputStream(新文件输入流(文件名)); 在.readObject()中显示=(列表); in.close(); } 捕获(例外e) { e、 printStackTrace(); } 回归演出; },java,Java,我得到java.lang.ClassCastException:com.bean.Show无法转换为java.util.List 我已经执行了反序列化来初始化已经序列化的show类的数据。我还通过实现可序列化的I/f使show类可序列化。我认为readObject方法无法转换为ArrayList。。请告诉我如何转换它?显然,您序列化的对象是Show的单个对象,而不是您所期望的Show列表,请尝试仅转换为Show,或者检查您的序列化,并确保您正在序列化文件中写入的列表,必须是Show类的实例,而不

我得到
java.lang.ClassCastException:com.bean.Show无法转换为java.util.List


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

显然,您序列化的对象是
Show
的单个对象,而不是您所期望的
Show
列表,请尝试仅转换为
Show
,或者检查您的序列化,并确保您正在序列化文件中写入的
列表,必须是Show类的实例,而不是
列表
。 可能,而不是
outputStream.writeObject(列表)您对(Show:list)outputStream.writeObject(Show)执行了类似于
的操作?
试着用同样的方法读回:

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;

 }
List shows=new ArrayList();
试一试{
while(true){
shows.add((Show)in.readObject());
}捕获(EOFEException e){
in.close();
//文件结束
}

我们也可以看到序列化吗?有效理论+1thanx..您的代码正常工作,但列表显示的是完全合格的类名..但我想初始化序列化文件中的show类成员..实际上我有一个任务,他们给我一个序列化文件,show类并要求我实现一个初始化的方法e使用反序列化显示类..请帮助我..我不明白你所说的“列表正在显示…”是什么意思,我是说当我编写system.out.println(显示)时它显示完全合格的类名..但是我为每个循环编写了一个函数来检索show类的变量值,它正在工作..你有比这更好的解决方案吗?你可以实现
show.toString()
方法来返回你想要打印的信息。然后
System.out.println(shows)
将打印该函数为列表中的每个元素返回的任何内容。
List<Show> shows = new ArrayList<Show>();
try {
    while(true) {
        shows.add((Show) in.readObject());
} catch (EOFException e) {
   in.close();
   // end of file
}