在多个类中使用java.util.prefs.Preferences

时间:2014-02-14 16:38:10

标签: java preferences

我想将java.util.prefs.Preferences集成到我的桌面应用程序中。

我需要能够从多个类访问用户首选项,如下所示:

public class ClassA
{
    Preferences prefs = Preferences.userRoot();
    prefs.put("PhoneNumber", phoneNumber);

    ...
} 

public class ClassB
{
    Preferences prefs = Preferences.userRoot();
    String phoneNumber = prefs.get("PhoneNumber", "555-555-1212");

    ...
}

在此处阅读API后:http://docs.oracle.com/javase/7/docs/api/java/util/prefs/Preferences.html

看来我应该在调用put()之后使用flush()以确保更改将反映在将来对get()的调用中,并且我还应该在get()之前使用sync() ,像这样:

public class ClassA
{
    Preferences prefs = Preferences.userRoot();
    prefs.put("PhoneNumber", phoneNumber);
    prefs.flush();

    ...
} 

public class ClassB
{
    Preferences prefs = Preferences.userRoot();
    prefs.sync();
    String phoneNumber = prefs.get("PhoneNumber", "555-555-1212");

    ...
}

文档甚至似乎鼓励在某一点使用flush():

“允许修改首选项数据的所有方法异步操作;它们可能会立即返回,并且更改最终将传播到具有依赖于实现的延迟的持久性后备存储.flush方法可用于同步强制更新到后盾商店。“

但问题是:文档似乎阻止显式使用flush()和sync():

“如同后备存储不可用,有几种方法(如flush)具有阻止它们运行的​​语义。普通应用程序不需要调用任何这些方法,这可以通过声明它们被抛出的事实来识别BackingStoreException“。

(sync()也抛出BackingStoreException)

此外,我读过的任何教程都没有使用flush()或get()。

我对此非常困惑,我想知道我是否应该显式调用flush()和get(),即使文档中似乎不鼓励这样做。

0 个答案:

没有答案