将全局配置变量封装为静态



我有几个全局变量,主要是不变的。有时(每隔几个月)我想改变它们。

它们保存在数据库中。

问题是:如果我更改静态变量,其他服务仍然使用旧值。我做错了什么?

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

问题是您正在更新默认的 DEFAULTS 实例中的数字值。 但是,Config.DIGITS的值已经设置并且没有重置,即DIGITS的分配不会更新,因为您更改了DEFAULTS.digit的值。

此外,我假设此代码中有一些拼写错误,因为 Config.DEFAULTS 是私有的,这里无法直接更新。

Config.DIGIT的值设置为 0 一次,并且从未更改。

您可以:

  • 更新Service.updateDefaults()Config.DIGIT的值
  • Config 类中添加一个 getter 以检索 DEFAULTS.getDigit() 的值

最新更新