我想将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(),即使文档中似乎不鼓励这样做。