gpt4 book ai didi

java - 如何创建 ArrayList 的安全保存并在类被编辑时加载它?

转载 作者:行者123 更新时间:2023-12-02 09:49:10 25 4
gpt4 key购买 nike

我想保存并加载包含“Book”对象的 ArrayList。

ArrayList<Book> books = new ArrayList<Book>();

我看到很多关于这个的话题,几乎都说要使用序列化。所以我完成了:

图书类(class)

public class Book implements Serializable{
STUFF
}

主要

public static void saveList(String saveName, ArrayList<Book> books) throws IOException {
FileOutputStream fos = new FileOutputStream(saveName);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(books);
oos.close();
}

public static ArrayList<Book> loadList(String saveName) throws ClassNotFoundException, IOException {
FileInputStream fis = new FileInputStream(saveName);
ObjectInputStream ois = new ObjectInputStream(fis);
ArrayList<Book> books = (ArrayList<Book>) ois.readObject();
ois.close();
return books;
}

它可以工作,但问题是,如果我们在类中进行更改(例如我们添加一个属性),它将不再加载保存。

所以我想保存在 xml 文件中。我看到了一些关于在 xml 文件中写入和加载的主题,但几乎所有主题都已过期链接并在最新版本中删除了包,因此它们是旧的灵魂,不再起作用。

问题:
如何创建包含对象的 ArrayList 的安全保存,并在更新 Book 类时加载它?对于“安全保存”,我的意思是它将适用于长期存储(我读到序列化不适用于长期存储)

我认为有一种方法,因为应用程序和游戏在更新时也会读取保存。他们是如何做到的?

PS,抱歉我的英语不好

最佳答案

使用某种数据库并管理您的架构。您的问题是您想要更改对象的定义而不更新现有对象。当您向图书添加 author 字段时会发生什么?新创作的书会有作者,而旧书则没有,你需要为此做好准备。这正是架构管理器所做的事情。

关于java - 如何创建 ArrayList 的安全保存并在类被编辑时加载它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56440669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com