我有以下代码:
private String foo;
public void setFoo(String bar)
{
foo = bar + "bin/";
}
我希望此代码使用重载的"bin/"
运算符连接bar和'+'
。当我在调试器中执行相同的代码示例时,它可以正常工作。出于某种原因,虽然foo总是等于bar而且永远不会有"bin/"
。
实际代码:
private String execpath_;
public void setMambaPath(String executable)
{
if (!(executable.endsWith("/")))
executable = executable.concat("/");
execpath_ = executable + "bin/";
}
其他地方execpath_ =只有在没有bin /:
的情况下可以删除StringBuilder cmd = getSshCommand_();
cmd.append(execpath_ + "mambaService");
我不在其他地方使用execpath_
答案 0 :(得分:2)
String
是不可变变量,不包含更改String
对象本身内容的方法。所以你需要使用concat()
方法。
或者第二种方法,您可以使用StringBuilder
private String foo;
public void setFoo(String bar)
{
StringBuilder builder = new StringBuilder();
builder.append(bar + "bin/");
foo = builder.toString();
}
答案 1 :(得分:0)
发布更多代码(包括您稍后使用foo
的位置)。 foo
正在其他地方进行修改,或者setFoo
有一个正在修改的本地foo
而不是this.foo
。我很确定这是第一个。
答案 2 :(得分:0)
什么有效:
public void setMambaPath(String executable)
{
if (!(executable.endsWith("/")))
executable = executable.concat("/");
executable = executable.concat("bin/");
execpath_ = executable;
}