我有一个将PanelFurniture
对象添加到ArrayList
的程序。当我尝试将数据保存到文件中时,它给了我java.io.NotSerializableException: PanelFurniture$1
异常。 PanelFurniture
是该类的名称,它已经实现了Serializable
,所以我不明白可能是什么问题。
这是我将ArrayList写入文件的代码
if(ae.getSource() == commandButtons[5]) {
int x = 5 , y = 11;
File confidential = new File("secrets.txt");
PrintWriter output = null;
try {
saveFile = new FileOutputStream("myFile.dat");
save = new ObjectOutputStream(saveFile);
save.writeObject(orderList);
save.close();
System.out.println(orderList);
}
catch (Exception e){
e.printStackTrace();
}
}
}
最佳答案
您的PanelFurniture
类(即ArrayList
的内容)需要实现Serializable
接口以及任何匿名内部类(如PanelFurniture$1
),因此Java不知道如何读写。此数据到磁盘。
如果您不想使用序列化,则可能需要执行以下操作……(伪代码)
Create a FileOutputStream
for (each item in the ArrayList){
get the properties of the PanelFurniture object, and write them to the FileOutputStream.
eg. fos.writeLine(panelFurniture.getName() + "," + panelFurniture.getValue());
}
Close the FileOutputStream.