我有几个全局变量,基本上不会改变。 有时(每隔几个月)我想改变它们。
它们保存在数据库中。
问题是:如果我更改静态变量,其他服务仍然使用旧值。 我做错了什么?
class Config {
public static Default DEFAULTS = new Default();
//several other static defaults
public static in DIGIT = DEFAULTS.getDigit();
}
class Default() {
private int digit = 0;
//get+set
}
class Service() {
updateDefaults() {
Config.DEFAULTS.setDigit(2);
dao.update(Config.DEFAULTS);
}
}
问题:使用 Config.DIGIT;
的其他服务仍然使用旧的默认值 digit = 0
。
最佳答案
问题是您正在更新 Default 的 DEFAULTS 实例中的数字值。但是 Config.DIGITS 的值已设置且未重置,即 DIGITS 的分配不会更新,因为您更改了 DEFAULTS.digit 的值。
此外,我假设这段代码中存在一些拼写错误,因为 Config.DEFAULTS 在这里是私有(private)的,无法直接更新。
关于java - 将全局配置变量封装为静态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587342/