簡體   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