Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java首选项API序列化对象_Java_Serialization_Preferences - Fatal编程技术网

使用Java首选项API序列化对象

使用Java首选项API序列化对象,java,serialization,preferences,Java,Serialization,Preferences,当我第一次开始使用JavaPreferencesAPI时,API中一个明显的遗漏是putObject()方法。我一直想知道为什么他们没有包括它 所以,我在谷歌上搜索了一下,发现了IBM的这篇文章,它向您展示了如何做到这一点: 他们使用的方法对我来说似乎有点黑客,因为你必须将对象分解成字节矩阵,存储它们,然后重新组装它们 我的问题是,有人尝试过这种方法吗?你能证明这是存储/检索对象的好方法吗 我还很好奇为什么Java开发人员将putObject()从API中删除。有人有宝贵的见解吗?这篇文章介绍了

当我第一次开始使用Java
Preferences
API时,API中一个明显的遗漏是
putObject()
方法。我一直想知道为什么他们没有包括它

所以,我在谷歌上搜索了一下,发现了IBM的这篇文章,它向您展示了如何做到这一点:

他们使用的方法对我来说似乎有点黑客,因为你必须将
对象
分解成
字节
矩阵,存储它们,然后重新组装它们

我的问题是,有人尝试过这种方法吗?你能证明这是存储/检索对象的好方法吗


我还很好奇为什么Java开发人员将
putObject()
从API中删除。有人有宝贵的见解吗?

这篇文章介绍了一种可靠的方法。我发现有几件事我可能会做得不同(比如我会存储碎片数量的计数以及碎片本身,这样我在检索它们时就可以很容易地找出它们)

但是,您关于序列化的评论是错误的。。。。要存储的对象必须是可序列化的。。。。文档使用的ObjectOutputStream就是这样完成任务的

因此,是的,它看起来是一种可靠的机制,您需要有可序列化的对象,我认为putObject和getObject不属于API的原因有两个:

  • 这不是Windows注册表固有的方式的一部分
  • 人们可能会将大量数据放入注册表
  • 在注册表中存储序列化对象让我感到有些担心,因为它们可能太大了。我只在无法从构造函数重构对象,并且序列化版本相对较小的情况下使用它

    我也很好奇为什么Java开发人员将putObject()从API中删除。 有人有宝贵的洞察力吗

    发件人:

    为什么这个API不包含读取和写入任意数据的方法 可序列化对象

    序列化对象有些脆弱:如果程序的版本 读取这样一个属性的版本与编写它的版本不同 对象可能无法正确(或根本无法)反序列化。这并非不可能 使用此API存储序列化对象,但我们不鼓励 它,并没有提供一个方便的方法


    “记住ObjectOutputStream只处理实现java.io.Serializable接口的对象,这一点很重要。”(引用上述文章)啊,是的,找到了。我的错误是不够彻底。编辑。