java - 如何读/写文件中具有链表的对象

标签 java oop class object linked-list

我有这些类(class):“MyClass1”、“MyClass2”、“MyClass3”和“MyMainClass”,

public class MyMainClass implements Serializable {
     private String att1, att2, att3;
     private int att4, att5, att6;
     private LinkedList <MyClass1> myClass1List = new LinkedList<MyClass1>();
     private LinkedList <MyClass2> myClass2List = new LinkedList<MyClass2>();
     private LinkedList <MyClass3> myClass3List = new LinkedList<MyClass3>();
}

我的程序创建“MyMainClass”的寄存器(对象)并将其存储在 LinkedList 中。我想将对象的 LinkedList 保存在文件中,以便在重新打开程序后获取它们。有什么方法可以做到呢?我尝试过使用 ObjectOutputStream,但不起作用。谢谢。

编辑: 我添加对象的代码(我刚刚阅读了一个示例并尝试过):

public static void addObject (MyMainClass p) {
    try {
        outputStream = new ObjectOutputStream(new FileOutputStream("myfile.dat"));
        outputStream.writeObject(p);
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
        System.exit(1);
    } catch (IOException ex) {
        ex.printStackTrace();
        System.exit(1);
    } finally {
        try {
            if (outputStream != null) {
                outputStream.flush();
                outputStream.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
            System.exit(1);
        }
    }
}

注意:“MyClass1”、“MyClass2”、“MyClass3”是可序列化的。

最佳答案

我会制作“myClass1”、“myClass2”和“myClass3”Serializable ,然后将 myClass1ListmyClass2ListmyClass3List(以及您想要保存的任何其他数据)包装在另一个可序列化的类中,以便您可以使用序列化/反序列化一次保存和恢复所有程序状态。

除非myMainClass是那个包装器,在这种情况下您需要声明它们都实现了Serialized。

关于java - 如何读/写文件中具有链表的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15884377/

相关文章:

Java - 寻找更有效的方法来编写类方法

java - 编译运行时是否需要指定间接导入的包?

design-patterns - 干燥与 "prefer containment over inheritance"

java - 在构造函数或方法主体之外无法识别公共(public)静态变量

C++继承 - 将 parent 更改为祖 parent

C++。 1类具有变化的参数

当调用外部方法时,嵌套在方法中的Python字典会自动执行所有值(方法)

java - 提交表单onclick时转义javascript中的值

java - 如何在使用带有 selenium 的 java 的网页中出现警报时得到通知 >

java - 通过 TCP java (Android)/C# 进行私钥加密