java - 将类和对象保存到文件 (Java)

标签 java

tldr:我对具有持久数据的程序不熟悉,正在寻找保存/加载文件的正确方法。谁能指出我正确的方向?

我正在进行一个项目,其中涉及在两个相关系统之间保存和加载大量文件。简单地说,有一个程序充当开发人员的“构建器”,另一个程序充当客户端的“界面”。

在“构建器”中,开发人员可以定义项目及其可能的属性,客户端可以在界面中与之交互。例如,开发人员可以制作一个名为“汽车”的项目,它可能具有颜色、型号和速度属性;还有一个叫做“房子”的元素,它有尺寸、颜色。他可以制作任意数量的元素,这些元素可能多种多样,并且每个元素都有一些共同的属性(名称、颜色)以及一系列不同的属性。

在“界面”中,客户可以选择任意数量的项目进入他们的世界。即,他们可能需要 2 辆车和 1 栋房子,并分别定义它们的属性,其中一辆汽车是快速红色 Hotrod,另一辆是慢速白色货车,房子是棕色和 3x2。

Car 和 House 都是 Item 的实例,但客户端进一步指定了 Car 的 2 个不同实例。

目前,我已将不同的实例(汽车、房屋等)保存到文本文件中,这似乎运行良好,但我确信一定有更好的方法(特别是因为我希望客户端界面可在安卓)。谁能给我指出正确的方向或一些可以帮助我做出选择的 Material ?

最佳答案

一个选项是使用 Java 二进制序列化。我个人会避免这种选择。

还有很多其他序列化框架。例如,我移植了Google的Protocol Buffers框架到 C#,所以我通常偏向于此 - 但也有很多其他选择,例如:

这些选项通常具有以下优点:

  • 可移植到其他平台(请考虑您将来是否想构建 iPhone 或 Windows Phone 7 应用)
  • 向后和向前兼容性
  • 人类可读性(或轻松转换为人类格式)
  • 其中一些也非常紧凑

诚然,Java 二进制序列化在工作时使简单路径变得非常容易 - 但在其他方面可能会很痛苦。只是我的经验。

关于java - 将类和对象保存到文件 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3706824/

相关文章:

java - 在实例化 JPanel 中编辑实例化 JList

java - 使用 SolrJ 更新 Solr 中的文档

java - 比较枚举条目 - Java

java - ACM 401-在线回教在线法官给出错误的答案

Java FX 2 堆空间

java - Opencv - 构建 Opencv 失败 (MacOSX)

java - 当页面没有元素时返回空的 "content"数组

java - 如何为 byte[] 编写 mockito 匹配器?

java - 如何检查表中的特定 TD 是否包含我想要的值?

java - 正确使用协程