我们的程序使用 Preferences 类存储用户设置,通过 Preferences.userNodeForPackage()
访问。我们刚刚完成了一次重大重构,发现所有用户设置在重构后都被遗忘了,因为传递给 userNodeForPackage()
的类不同。例如。我们现在有 org.foo.bar.MyClass
,而不是 org.foo.MyClass
。
我想“导入”旧的首选项,这样我们的用户就不会注意到被遗忘的事情。如果有必要,我可以手动将旧的 Preferences 对象中的各个键/值对复制到新的 Preferences 对象,但我必须能够首先获取旧的 Preferences 对象。如果无法访问旧类,我不明白这是怎么可能的。
我错过了什么吗?我看到 Preferences.node()
/Preferences.nodeExists()
方法看起来很有前途,只不过它们只对包含所需节点的现有 Preferences 进行操作。因此,我们必须能够获得一棵包含旧根节点的树,并且在该旧节点所在的位置之上没有类(重构的部分目的是使我们的层次结构变得扁平化)。
我真的不想用虚拟文件污染我们干净的源代码,这样我们就可以访问旧的首选项。也许您可以将包分配给运行时生成的匿名类?或者是否有其他方法可以获取特定包的 Preferences 对象,而不需要传入该包的类?
提前致谢。
最佳答案
RC 使用 Preferences.userRoot()
的注释正是我所需要的——它可以让你获得整个 Preferences 树的根,然后你可以使用 Preferences.node( )
以获得您需要的任何值。谢谢,RC!
关于java - 加载不存在类的首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30464014/