如何访问在另一个类中定义的java.util.prefs.Preferences对象

如何访问在另一个类中定义的java.util.prefs.Preferences对象,java,class,preferences,Java,Class,Preferences,我想了解如何访问在不同类中定义的java.util.prefs.Preferences对象。或者,就这一点而言,使用首选项的最佳实践是什么 我当前从设置对话框保存了首选项,如下所示: 公共类设置扩展JDialog{ // [...] private final Preferences prefs=Preferences.userRoot().node(this.getClass().getName()); // [...] } 这对于设置各种首选项、恢复默认值等非常有用。但是,一旦保存了这些首

我想了解如何访问在不同类中定义的
java.util.prefs.Preferences
对象。或者,就这一点而言,使用
首选项的最佳实践是什么

我当前从设置对话框保存了首选项,如下所示:

公共类设置扩展JDialog{
// [...]
private final Preferences prefs=Preferences.userRoot().node(this.getClass().getName());
// [...]
}
这对于设置各种首选项、恢复默认值等非常有用。但是,一旦保存了这些首选项,我需要从另一个类,特别是我的主对话框访问它们。但是,一旦
设置
对话框被释放,似乎就无法访问其pref。如果我使用
prefs
static,我就不能使用
this.getClass().getName()

我似乎找不到任何关于如何正确地做到这一点的信息,需要指导。我需要做什么?我不介意将
prefs
放入它自己的类中,但我仍然会遇到静态问题,并从另一个类引用它。

通过查找获得对象。无论您在代码中的什么位置,如果使用相同的查找键,您将获得相同的
首选项
对象。提供了不同的查找方法。你只需要选择一个并保持一致。在我的代码中,我使用[static]方法。该方法接受单个参数,该参数是
对象。只要我调用方法
userNodeForPackage
并传递相同的
Class
对象,我就会得到相同的
首选项
对象

获取
Class
对象的一种方法(但不是唯一的方法)是通过Class
java.lang.Class
中的[static]方法。但是,只要获得正确的
对象,获取
对象的方式就无关紧要

也许这篇文章会有所帮助:

您可以使用相同的代码。只需将
this.getClass()
替换为,并提供类
设置的[完全限定]名称即可。感谢您的回复,@Abra。因此,我是否需要将
设置中的声明更改为
公共静态最终首选项prefs=Preferences.userRoot().node(Class.forName(“info.chrismcgee.sky.artdept.Settings”).getName()?(当然,用try/catch括起来。)因为如果
.node()
只需要一个字符串,我就可以给它(完全限定的?)名称,而不必经过
类.forName()
。事实上,这很有帮助。很好的解释是,有许多方法可以实现相同的
首选项
对象。最后我使用了
private final Preferences prefs=Preferences.userNodeForPackage(this.getClass())Settings
class和
public final Preferences prefs=Preferences.userNodeForPackage(Settings.class)中的code>在主对话框的类中。这两个都应该引用同一个对象。非常感谢你,艾布拉!