字符串变量不起作用 - 但硬编码确实...(JAVA)

时间:2013-02-14 11:15:30

标签: java string hardcoded

我在Java中遇到以下问题:

这样可以正常工作:

xyz.setUserValue("ABC", "file_xyz.abc");

但这不是:

String test = "file_" + VariableXYZ.toLowerCase() + ".abc";
System.out.println(test);
xyz.setUserValue("ABC", test);


- > println的输出(测试)==> file_xyz.abc
奇怪的是它之前有效,但从一个时刻到另一个时刻它没有。 Java bug? - 任何想法?

事先感谢!!

1 个答案:

答案 0 :(得分:3)

不,这不是Java错误。

不可能说实际导致了这种情况,但是它不可能是Java错误。

如果您更好地解释了上下文并向我们展示了setUserValue方法的代码,我们可能会提出合理的理论。 (SSCCE是理想的,但我强烈怀疑你无法编写能够可靠地证明问题的代码......)


好的,这是:

public static String setUserValue(String key, String value) { 
    String oldValue = getUserProperties().getProperty(key);
    getUserProperties().setProperty(key, value); 
    return oldValue;
}

...然后假设“属性”对象是Properties的实例,最可能的解释是:

  • 导致getUserProperties()在第一次和第二次调用中返回另一个对象
  • 其他东西正在修改第一次和第二次调用之间的Properties对象,
  • “属性”对象的“ABC”值与您期望的值不同,或者
  • 其他东西正在将属性更改回其原始值;例如通过从源文件重新加载属性。

或许有一个例外,你没有告诉我们......或者已经被压扁了。或许你正在以错误的方式比较字符串(使用==),这会使你/你的程序感到困惑。

或许你对构建和/或部署内容的方式有疑问。