我正在使用https://www.vogella.com/tutorials/JavaPreferences/article.html中的示例和以下代码:import java.util.prefs.Preferences;public class PreferenceTest { private Preferences prefs; public void setPreference() { // This will define a node in which the preferences can be stored prefs = Preferences.userRoot().node(this.getClass().getName()); String ID1 = "Test1"; String ID2 = "Test2"; String ID3 = "Test3"; // First we will get the values // Define a boolean value System.out.println(prefs.getBoolean(ID1, true)); // Define a string with default "Hello World System.out.println(prefs.get(ID2, "Hello World")); // Define a integer with default 50 System.out.println(prefs.getInt(ID3, 50)); // now set the values prefs.putBoolean(ID1, false); prefs.put(ID2, "Hello Europa"); prefs.putInt(ID3, 45); // Delete the preference settings for the first value prefs.remove(ID1); } public static void main(String[] args) { PreferenceTest test = new PreferenceTest(); test.setPreference(); }}以下是后续运行的输出:1)初始运行以保存首选项:true 2019 年 4 月 23 日晚上 10:56:22 java.util.prefs.WindowsPreferences Hello World 警告:无法在根 0x80000002 打开/创建首选项根节点 Software\JavaSoft\Prefs。Windows RegCreateKeyEx(...) 返回错误代码 5. 502)第二次运行已经读取了第一次运行时写入的值:true 2019 年 4 月 23 日晚上 10:56:57 java.util.prefs.WindowsPreferences Hello Europa 警告:无法在根 0x80000002 打开/创建首选项根节点 Software\JavaSoft\Prefs。Windows RegCreateKeyEx(...) 返回错误代码 5. 45您可能会注意到 int 和 String 值被很好地检索并且没有被默认值替换,而布尔值没有被检索并且被替换为默认值(即两个输出都在那里给出 true 而期望是实现 false在第二次运行)。
1 回答
有只小跳蛙
TA贡献1824条经验 获得超8个赞
我在这里错了:我错过了从首选项中删除 ID1 密钥的事实:
// Delete the preference settings for the first value prefs.remove(ID1);
如果我将其注释掉,一切都会按预期进行。
添加回答
举报
0/150
提交
取消