Java 静态最终变量在重建后具有旧值

Java 静态最终变量在重建后具有旧值,java,android,Java,Android,这是我的Config类: public class Config { public static final String urlApi = "http://127.0.0.1/api/"; } 每当我想更改位置时,我必须更改此变量的值: public class Config { public static final String urlApi = "http://192.168.50.101/api/"; } 在这种情况下,该值为: “” 但在调试模式下,我看到“urlApi”

这是我的
Config
类:

public class Config
{
  public static final String urlApi = "http://127.0.0.1/api/";
}
每当我想更改位置时,我必须更改此变量的值:

public class Config
{
  public static final String urlApi = "http://192.168.50.101/api/";
}
在这种情况下,该值为:

“”

但在调试模式下,我看到“urlApi”有一个旧值,旧IP地址。很奇怪。我怎么修理它

您必须更改:

public class Config {
    public static final String urlApi = "http://192.168.50.101/api/";
}
致:

final
关键字表示字符串是常量,而不是变量。这是不可改变的。删除
final
将允许在您想正常更改字符串的任何时候进行更改。

您必须更改:

public class Config {
    public static final String urlApi = "http://192.168.50.101/api/";
}
致:

final
关键字表示字符串是常量,而不是变量。这是不可改变的。删除
final
将允许在任何时候更改字符串,就像正常情况一样。

请看:

有不同的访问修饰符

请看:


有不同的访问修饰符

我解决了这个问题。我去“清洁项目”,然后再去“制作项目”,我想这就是解释

注意:如果原语类型或字符串被定义为常量,并且该值在编译时是已知的,则编译器会用其值替换代码中所有地方的常量名称。这称为编译时常量。如果外部世界中常量的值发生变化(例如,如果法律规定pi实际上应为3.975),则需要重新编译使用此常量的任何类以获得当前值


我解决了这个问题。我去“清洁项目”,然后再去“制作项目”,我想这就是解释

注意:如果原语类型或字符串被定义为常量,并且该值在编译时是已知的,则编译器会用其值替换代码中所有地方的常量名称。这称为编译时常量。如果外部世界中常量的值发生变化(例如,如果法律规定pi实际上应为3.975),则需要重新编译使用此常量的任何类以获得当前值



如果将其设置为final,则该值永远不会更改。绝对不会。如果一个变量被声明为final,则意味着它只被初始化了一次,将final视为一个常量。一旦你设置好了,它就完成了。无法更改该变量引用的内容。编译时常量。它们很有趣:-不让它们成为最终版本实际上是有帮助的,但还有其他方法。就像在将他们分配到他们的
最终目的地之前,将他们传递给一个对他们没有任何作用的方法。为什么我会收到这么多的错误,我想有些人不理解我的问题。:)如果将其设置为final,则该值永远不会更改。绝对不会。如果一个变量被声明为final,则意味着它只被初始化了一次,将final视为一个常量。一旦你设置好了,它就完成了。无法更改该变量引用的内容。编译时常量。它们很有趣:-不让它们成为最终版本实际上是有帮助的,但还有其他方法。就像在将他们分配到他们的
最终目的地之前,将他们传递给一个对他们没有任何作用的方法。为什么我会收到这么多的错误,我想有些人不理解我的问题。:)Config是嵌套类吗?如果是,您是否使用Config.urlApi调用urlApi?不,Config不是嵌套类;urlApi的值没有改变,也不是最终值,那么您必须将相同的旧值设置为urlApi。我不想在运行时更改值。再次阅读以下问题:)Config是嵌套类吗?如果是,您是否使用Config.urlApi调用urlApi?不,Config不是嵌套类;urlApi的值没有改变,也不是最终值,那么您必须将相同的旧值设置为urlApi。我不想在运行时更改值。请再次阅读以下问题:)答案中关于编译时常数的假设可能是正确的。一个好的IDE应该能够检测到这种情况,并触发受影响类的重建。一个好的IDE应该检测到这种情况,并触发受影响类的重建。