【问题标题】:How to Serialise objects from multiple classes如何序列化来自多个类的对象
【发布时间】:2019-08-05 16:25:49
【问题描述】:

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

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

目前,我一直在读取每个控制器中的序列化文件以填充数组列表。这是我在“书”控制器中的阅读方法。 而且我也有一个保存到文件的方法,但是我不确定如何从不同的控制器实现 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());
    }
}

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

【问题讨论】:

  • 你似乎已经这样做了。有什么问题?

标签: java model-view-controller serialization fileinputstream fileoutputstream


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2015-06-16
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 2015-10-08
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多