-1

我有以下代码:

private String foo;

public void setFoo(String bar)
{
  foo = bar + "bin/";
}

我希望这段代码能够连接 bar 并"bin/"使用重载'+'运算符。当我在调试器中执行相同的代码示例时,它工作正常。出于某种原因,尽管 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_

4

3 回答 3

3

String是不可变的变量,不包含改变String对象本身内容的方法。所以你需要使用concat()方法。

或者您可以使用的第二种方法StringBuilder

private String foo;

public void setFoo(String bar)
{
  StringBuilder builder = new StringBuilder();
  builder.append(bar + "bin/");
  foo = builder.toString();
}
于 2012-07-04T15:47:57.650 回答
1

什么有效:

  public void setMambaPath(String executable)
  {

    if (!(executable.endsWith("/")))
      executable = executable.concat("/");

    executable = executable.concat("bin/");

    execpath_ = executable;
  }
于 2012-07-04T16:03:44.983 回答
0

发布更多代码(包括您foo以后使用的地方)。要么foo在其他地方被修改,要么setFoo有一个foo正在修改的本地而不是this.foo. 我很确定这是第一个。

于 2012-07-04T15:44:59.597 回答