困惑于简单的Java String替换bug

时间:2015-12-03 22:24:40

标签: java

我已经成为一名专业程序员已有好几年了,今天我遇到了一个无法解释的问题。我有一个对象具有关联的枚举类型和一个String作为实例变量。对于某些类型,我想用String中的句点替换反斜杠。我知道资产被正确识别为ContentType.text,但以下代码未被执行:

String modifiedKeyPath = keyPath.toString();

if(!ContentType.slot.equals(type) && !ContentType.node.equals(type)) {
    modifiedKeyPath.replace("/", ".");
}

DiffFields diffField = new DiffFields(type1, name, modifiedKeyPath)

澄清:

type = ContentType.text
keyPath = "asdf/ghjk"

执行代码后,modifiedKeyPath仍为"asdf/ghjk"。任何人都可以想到为什么会发生这种情况?我感到困惑

1 个答案:

答案 0 :(得分:2)

String.replace(CharSequence, CharSequence)不在原地(Java String是不可变的)。分配结果。像

这样的东西
modifiedKeyPath = modifiedKeyPath.replace("/", ".");