0

グローバルで主に変更されない変数がいくつかあります。時々(数か月ごとに)私はそれらを変更したいと思います。

それらはDBに保存されます。

問題は、静的変数を変更しても、他のサービスが古い値を引き続き使用することです。私は何を間違っていますか?

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

問題は、Default の DEFAULTS インスタンスで数字の値を更新していることです。ただし、Config.DIGITS の値はすでに設定されており、リセットされません。つまり、DEFAULTS.digit の値を変更したため、DIGITS の割り当ては更新されません。

さらに、ここでは Config.DEFAULTS が非公開であり、直接更新できないため、このコードにはいくつかのタイプミスがあると思います。

于 2012-11-27T15:33:13.127 に答える
1

の値Config.DIGITは一度 に設定され0、変更されることはありません。

次のいずれかを実行できます。

  • Config.DIGITinの値を更新するService.updateDefaults()
  • クラスにゲッターを追加してConfig、値を取得しますDEFAULTS.getDigit()
于 2012-11-27T15:32:39.747 に答える