我有一个将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.

09-10 06:31