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

它们保存在数据库中。

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

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是私有的,此处无法直接更新。

关于java - 封装全局配置变量为静态?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13587342/

10-10 14:09