java - 加载不存在类的首选项

标签 java preferences

我们的程序使用 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/

相关文章:

java - 设置 MDC 以使用 ServerInterceptor 登录 grpc-java 的正确方法是什么?

java - 分布式 session 对发展的影响

android - 以编程方式在 Android 中启用/禁用屏幕旋转

android - Android 系统在哪里存储应用程序在您的主屏幕/桌面上的位置

java - java.net.URL 上的 toExternalForm 和 toString 之间是否存在语义差异?

java - 无法从 Jar 加载图像

android 从广播接收器获取偏好

php - 存储全局站点首选项 [PHP/MySQL]

java - Android:使用微调器更改主要 Activity 背景颜色

java - Java 首选项存储在 Windows 7 中的什么位置?