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
}