我正在使用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(); }}以下是后續(xù)運行的輸出:1)初始運行以保存首選項:true 2019 年 4 月 23 日晚上 10:56:22 java.util.prefs.WindowsPreferences Hello World 警告:無法在根 0x80000002 打開/創(chuàng)建首選項根節(jié)點 Software\JavaSoft\Prefs。Windows RegCreateKeyEx(...) 返回錯誤代碼 5. 502)第二次運行已經讀取了第一次運行時寫入的值:true 2019 年 4 月 23 日晚上 10:56:57 java.util.prefs.WindowsPreferences Hello Europa 警告:無法在根 0x80000002 打開/創(chuàng)建首選項根節(jié)點 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
提交
取消