我有几个全局变量,主要是不变。 有时候(每隔几个月)我想改变它们。
它们保存在数据库中。
问题是:如果我更改静态变量,其他服务仍然使用旧值。 我做错了什么?
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
。
答案 0 :(得分:2)
问题是您正在更新默认的DEFAULTS实例中的数字值。但是,Config.DIGITS的值已设置且未重置,即DIGITS的分配不会更新,因为您更改了DEFAULTS.digit的值。
此外,我假设此代码中存在一些拼写错误,因为此处的Config.DEFAULTS是私有的,无法直接更新。
答案 1 :(得分:1)
Config.DIGIT
的值设置为0
一次,永不改变。
你可以:
Config.DIGIT
Service.updateDefaults()
的值
Config
类中添加一个getter以检索DEFAULTS.getDigit()