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是私有的,不能直接更新 他已经删除了他的无稽之谈(这只是在炫耀他根本不明白静态是如何工作的)。我也会删除我的评论。他已经删除了他的无意义的评论(这只是表明他根本不明白静态
是如何工作的)。我也会删除我的评论。