我已经成为一名专业程序员已有好几年了,今天我遇到了一个无法解释的问题。我有一个对象具有关联的枚举类型和一个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"
。任何人都可以想到为什么会发生这种情况?我感到困惑
答案 0 :(得分:2)
String.replace(CharSequence, CharSequence)
不在原地(Java String
是不可变的)。分配结果。像
modifiedKeyPath = modifiedKeyPath.replace("/", ".");