我目前有一个名为UserSettings
的对象,其中包含许多用户偏好变量。
在另一个名为playerLabels
的类中,我像这样实例化对象:public static UserSettings settings = new UserSettings();
在第三类中,我从文件中读取并通过执行(例如playerLabels.settings.setToggled(true);
)编辑设置对象。我在设置文件中有许多布尔值,其中一些我想要切换(打开->off或关闭->on)。在我看来,有三种方法可以做到这一点:
playerLabels.settings.toggled = !playerLabels.settings.toggled;
playerLabels.settings.setToggled(!playerLabels.settings.getToggled());
- 为每个布尔值在
settings
中创建一个切换方法
我学会了在java中使用setter和getter,而不是直接访问变量,这就是为什么我不想使用第一种方法。
第二个有点长,感觉很笨拙,但如果这是这样做的方式,那就好了。
第三种方法是为每个布尔值创建方法。
我有一种感觉,我的存储用户偏好的方法是不理想的,因为我访问另一个不必要的类(playerLabels)来编辑设置。如果有更好的方法来按照我想要的方式存储变量,那将会很有帮助。
感谢UserSettings:
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;
}
}
总之,必须在类中编写一个保存私有变量的方法。创建私有变量的全部意义在于限制访问,从而封装变量。如果你想切换它,写一个方法,使用getter/settings来切换它。
如果您真的想偷懒,不想为每个设置添加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();