【问题标题】:Saving a class object without serialization保存类对象而不进行序列化
【发布时间】:2012-02-27 18:43:10
【问题描述】:

我有一个名为 MyClass 的类,有几个属性 String name、String place、int num....
我阅读了 android 开发者网站,但我并不真正了解它是如何工作的。
所以我想要一种将这些保存到文件或某处的方法,当我想从另一个活动或任何地方读取它时,我可以将它放入一个数组或其他东西,所以我得到 g.Name、g.place 和其他属性.

我也希望能够编辑和删除这些。

如果有人知道一个好的解决方案,请写信。对不起我的英语。

【问题讨论】:

  • 如果您希望将MyClass 的值保存在应用程序范围之外 的某个位置(例如保存到SharedPreferences 或文件),您将别无选择但要序列化数据。这当然假设您希望在您的应用程序关闭之后 访问这些数据。现在,如果您只想在 应用程序运行时保存数据,您可以使用单例、全局类等方式。
  • 你可以用任何方式保存你的类,只要你有保存它的方法和从文件创建对象的其他方法
  • 是的,但我读到如果我序列化我的类,如果我修改该类,它将不再工作,所以首先我只想测试我写的内容是否有效。
  • 一般来说,当类型改变时,只要以兼容的方式进行改变,序列化就可以工作。序列化规范有更多信息:docs.oracle.com/javase/6/docs/platform/serialization/spec/…
  • 谢谢我觉得没有别的办法了,我要序列化它,我做一个备份比:)

标签: java android object save storage


【解决方案1】:

SharedPreferences 是一种易于使用的选项。这里有一个很好的入门指南:http://developer.android.com/guide/topics/data/data-storage.html#pref

【讨论】:

  • 没有。您必须将原始值(字符串、整数、布尔值)放入 SharedPreferences。既然你提到你的类只有几个属性,这似乎是一种实用的方法。
【解决方案2】:

您可以使用能够将任何对象序列化为 XML 的 XStream(当然还有一些假设)。它比序列化慢,但在你的情况下它应该可以正常工作。

【讨论】:

    【解决方案3】:

    您可以使用来自谷歌的 JacksonJSON 或 gson。这样您就可以将对象写入文件并再次读取。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 2021-10-06
      • 1970-01-01
      相关资源
      最近更新 更多