繁体   English   中英

如何序列化来自多个类的对象

[英]How to Serialise objects from multiple classes

我正在编写一个使用序列化来存储程序对象(用户、管理员、书籍等)的程序。 我有多个控制器来控制将不同对象添加到不同的数组列表。 示例:登录控制器控制向系统添加和删除用户示例:控制向系统添加和删除书籍的图书控制器

我想知道将来自不同控制器的所有这些不同对象保存到我的序列化文件中的最佳方法。

目前,我一直在读取每个控制器中的序列化文件来填充数组列表。 这是我在“Book”控制器中的阅读方法。 我也有一个保存到文件的方法,但是我不确定如何从不同的控制器实现 ArrayList。

private void populateArrayLists() {
    System.out.print("Im here in ArrayList");
    ArrayList<Object> deserialised = new ArrayList<Object>();

    try {
        FileInputStream file = new FileInputStream("info.ser");
        ObjectInputStream inputFile = new ObjectInputStream(file);
        deserialised = (ArrayList<Object>) inputFile.readObject();

        inputFile.close();
        file.close();
    } catch (IOException | ClassNotFoundException e) {
        JOptionPane.showMessageDialog(null, e.getMessage());
    }
    books = (ArrayList<Book>) deserialised.get(2);
}
private void saveData() {
    ArrayList<Object> allData = new ArrayList<Object>();

    books.add(book1);
    admins.add(admin1);
    users.add(user1);

    allData.add(users);
    allData.add(admins);
    allData.add(books);

    try {
        FileOutputStream file;
        file = new FileOutputStream("info.ser");
        ObjectOutputStream outputFile = new ObjectOutputStream(file);
        outputFile.writeObject(allData);
        outputFile.close();
        file.close();
        JOptionPane.showMessageDialog(null, "Saved");
    } catch (IOException e) {
        JOptionPane.showMessageDialog(null, e.getMessage());
    }
}

我想要一种将不同控制器中的所有不同对象保存在一个地方的方法。

鉴于您的问题描述,我建议您实施一种解决方案,您可以按照领域驱动设计所描述的方式利用存储库概念。 它允许您集中处理迄今为止拥有的对象集合的逻辑。 由于您决定使用文件,我建议您为每一类对象创建一个文件,而不是为所有对象集合创建一个文件。 在这里你可以找到一个基本的方法,它可以用泛型进一步改进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM