Java 关于将对象保存到文件的指导原则

Java 关于将对象保存到文件的指导原则,java,Java,我的工作是一个手把手的任务,就像一个简单的银行与客户和不同的帐户。现在,我必须开发我的任务来将我的客户对象和帐户对象存储到文件中。我已经读了一些关于它的文章,我将使用ObjectOutputStream和ObjectInputStream 由于我在arraylist中有所有的customer对象,称为customerList,在arraylist中有属于客户的所有account对象,称为accountsList,我想知道我是否应该也可以保存arraylist,还是应该单独保存所有对象 当我要加载

我的工作是一个手把手的任务,就像一个简单的银行与客户和不同的帐户。现在,我必须开发我的任务来将我的客户对象和帐户对象存储到文件中。我已经读了一些关于它的文章,我将使用ObjectOutputStream和ObjectInputStream

由于我在arraylist中有所有的customer对象,称为customerList,在arraylist中有属于客户的所有account对象,称为accountsList,我想知道我是否应该也可以保存arraylist,还是应该单独保存所有对象

当我要加载customer对象时,我是否应该再次将它们放入arraylist中,以便能够像我知道之前那样访问它们?寻找一个好的、简单易懂的解决方案。谢谢你的帮助!谢谢

也许我可以做一个循环,在数组列表中选择每个对象,并将它们保存为object。然后当我要加载它们时,只需再次循环,加载它们并将它们添加到数组列表中

您可以保存(技术术语是序列化)任何对象,只要它们实现
java.io.Serializable
ArrayList
实现了
Serializable
,因此只要您的客户和帐户对象实现了
Serializable
接口,就不会有问题

使用ArrayList进行序列化的示例:

注:
存储长期(和生产)数据的更好方法是使用DBMS(RDBMS或NoSQL DB)系统。

存储和加载整个arraylist比单个对象更容易。无论哪种方式,您都需要确保对象是可序列化的

在非作业设置中,您可能会将帐户列表存储在一个单独的对象中,该对象包含所有persistsnt应用程序状态。然后在启动时读取状态,并在关机时存储。您应该确保您的类定义了一个串行版本uid,这样,如果您更改了它们的结构,就可以将新版本标记为与旧数据不兼容


最后,银行数据应存储在可靠的数据库中。串行化机制用于短期存储,如通信协议,或用于相对不重要的数据,如浏览器历史记录或用户偏好。将其用于长期存储意味着您无法修改所使用的类,否则可能会丢失数据

好的,我是否必须使用可序列化到从基类Account扩展而来的子类(savingsAccount和CreditAccount)的实现?或者只在Account类上执行就足够了?@3D krative如果为Account指定它就足够了OK,我是否编写如下内容:outObjectStream.writeObject(ArrayList的名称)??那么,如果我加载它,我如何用当前的arraylist及其内容替换加载的内容?@3D Krativ添加了带有示例的链接。好的,我是否编写这样的内容:outObjectStream.writeObject(nameOfArrayList)?是的,这就是您要做的。你试过了吗?还没有,我正在写一些其他的代码,以获得一些新的按钮,首先能够保存和加载对象。我还没有决定使用循环,保存/加载每个对象,然后将它们添加到arraylist!?似乎更容易理解。如果加载arraylist,如何用刚保存的arraylist替换它?取决于程序如何使用arraylist。一个简单的变量赋值就足够了。