0

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

它们保存在数据库中。

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

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.

4

2 回答 2

2

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

另外,我假设这段代码中有一些拼写错误,因为 Config.DEFAULTS 在这里是私有的,不能直接更新。

于 2012-11-27T15:33:13.127 回答
1

的值Config.DIGIT被设置为 一次0,并且永远不会改变。

您可以:

  • 更新Config.DIGITin的值Service.updateDefaults()
  • 在类中添加一个 getterConfig来检索DEFAULTS.getDigit()
于 2012-11-27T15:32:39.747 回答