Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将全局配置变量封装为静态变量?_Java_Jakarta Ee_Static - Fatal编程技术网

Java 是否将全局配置变量封装为静态变量?

Java 是否将全局配置变量封装为静态变量?,java,jakarta-ee,static,Java,Jakarta Ee,Static,我有几个全局变量,主要是不变的。 有时候(每隔几个月)我想改变一下 它们保存在数据库中 问题是:如果我更改静态变量,其他服务仍然使用旧值。 我做错了什么 class Config { public static Default DEFAULTS = new Default(); //several other static defaults public static in DIGIT = DEFAULTS.getDigit(); } class Default(

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

它们保存在数据库中

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

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

Config.digit
的值设置为
0
,并且从未更改

您可以:

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

配置数字的值设置为
0
,并且从未更改

您可以:

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

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


此外,我假设这段代码中有一些输入错误,因为Config.DEFAULTS是私有的,不能直接更新

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


此外,我假设这段代码中有一些输入错误,因为Config.DEFAULTS是私有的,不能直接更新

他已经删除了他的无稽之谈(这只是在炫耀他根本不明白
静态
是如何工作的)。我也会删除我的评论。他已经删除了他的无意义的评论(这只是表明他根本不明白
静态
是如何工作的)。我也会删除我的评论。