【问题标题】:Constant String is changing on call常量字符串随叫随到
【发布时间】:2019-08-14 07:00:31
【问题描述】:

我的项目中的所有常量都有一个 Konst 类。常量之一获取系统属性 user.home。当我在不同的类中调用常量时,它的结果与在常量类中不同。

public final class Konst {

  public static final String SERVER = "Server"; 
  public static final String LOGIN = "Login";
  public static final String CHAT = "Chat";
  public static final String PATH = System.getProperty("user.home");
}
public final class ConfigLoader {

  private static final String CONFIG_PATH = Konst.PATH + "/Documents/config.xml";

  private static final Logger LOG = ChatManager.getLogger();

  private ConfigLoader() {
  }

...
}

Konst 类中 PATH 的值 = C:\Users\myname

ConfigLoader 类中 Konst.PATH 的值 = C:\Users\myname/Documents/Hausaufgaben/

CONFIG_PATH 的值 = C:\Users\myname/Documents/Hausaufgaben//Documents/Hausaufgaben/config.xml

我从不为常量分配任何其他内容(它甚至不应该是可编辑的),并且在整个项目中我没有出现“文档”或“Hausaufgaben”这些词。

【问题讨论】:

  • 你可能想谷歌系统属性和user.home
  • 是否都使用同一个 ClassLoader?

标签: java debugging intellij-idea


【解决方案1】:

看起来很奇怪,因为您所说的路径值是

The value of PATH in the class Konst = C:\Users\myname

CONFIG_PATH 的值为

C:\Users\myname/Documents/Hausaufgaben//Documents/Hausaufgaben/config.xml

它不应该改变 Konst.PATH 的值,除非你 ConfigLoader 中的 Konst.PATH 是它自己的不同类。

您能否为您的 Konst.PATH 放置一些常量字符串,并检查您的 CONFIG_PATH 是否基于此更改。如果不是,那么它使用其他类。

public static final String PATH = "SOME/PATH/";

【讨论】:

    【解决方案2】:

    该死的,我现在觉得自己很愚蠢。由于这是一个 Maven 项目,并且 Konst 类与其他类位于不同的模块中,因此我所要做的就是也清理安装模块,但我忘记了。不过感谢您的帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多