我目前有一個名為的物件,UserSettings其中包含許多用戶偏好的變數。
在另一個名為 的類中playerLabels,我像這樣實體化物件:
public static UserSettings settings = new UserSettings();
在第三堂課中,我從檔案中讀取并通過執行(例如)編輯設定物件 playerLabels.settings.setToggled(true);
我在設定檔案中有許多布林值,其中一些我想切換(打開-> 關閉或關閉-> 開啟)。從我的角度來看,有三種方法可以做到這一點:
playerLabels.settings.toggled = !playerLabels.settings.toggled;playerLabels.settings.setToggled(!playerLabels.settings.getToggled());settings為每個布林值創建一個切換方法
我學會了在 java 中使用 setter 和 getter,而不是直接訪問變數,這就是為什么我不想做第一個。
第二個有點長,感覺很笨拙,但是如果這是這樣做的方式,那很好。
第三個是為每個布林值創建方法很耗時。
我有一種感覺,我存盤用戶首選項的方法并不理想,因為我正在訪問另一個不必要的類 (playerLabels) 來編輯設定。如果有更好的方法以我想要的方式存盤變數,那會很有幫助。
謝謝
用戶設定:
public class UserSettings {
private boolean toggled = true;
private float height = 0f;
private boolean shadow = true;
private boolean personal = false;
public boolean isToggled() {
return toggled;
}
public void setToggled(boolean toggled) {
this.toggled = toggled;
}
public float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
public boolean isShadow() {
return shadow;
}
public void setShadow(boolean shadow) {
this.shadow = shadow;
}
public boolean isPersonal() {
return personal;
}
public void setPersonal(boolean personal) {
this.personal = personal;
}
}
uj5u.com熱心網友回復:
簡而言之,您不能不在包含私有變數的類中撰寫一個方法。創建私有變數的全部目的是限制訪問,從而封裝變數。如果要切換它,請撰寫一個使用 getter/settings 來切換它的方法。
uj5u.com熱心網友回復:
如果你真的想偷懶而不為每個設定添加一個 toggle() 方法,你可以創建一個新類:
public class ToggleOption {
private boolean value;
public ToggleOption() {}
public ToggleOption(boolean initialValue) {
this.value = initialValue;
}
get() {
return value;
}
set(boolean value) {
this.value = value;
}
toggle() {
this.value = !value;
}
}
在您的 UserSettings 類中,您然后使用這個新類而不是布爾標志:
public class UserSettings {
private ToggleOption toggled = new ToggleOption(true);
private float height = 0f;
private ToggleOption shadow = new ToggleOption(true);
private ToggleOption personal = new ToggleOption();
...
}
要切換,您只需呼叫
playerLabels.settings.getToggled().toggle();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/327269.html
上一篇:Python-串列-字串值更改
