使用StringBuilder而不是toString()

时间:2015-04-05 15:58:34

标签: java tostring stringbuilder

注释最初显示了toString()方法,但我想将其更改为字符串构建器方法。我有几个,但这是最简单的一个。你可以看到我尝试过的东西。提前谢谢。

public StringBuilder toString() {
    StringBuilder str = new StringBuilder();
    str.append("Data in Kennel " + name + " is:");
    //String results = "Data in Kennel " + name + " is:";

    for (Animal d : dogs) {
        //results = results + d.toString() + "\n";
        str.append(d.toString() + "\n");
    }

    return str;
   //return result;
}

2 个答案:

答案 0 :(得分:2)

如果是toString()覆盖,或者即使它不是,那么必须返回String,而不是StringBuilder。否则它不是真正的覆盖,并且它甚至不应该编译,因为方法签名与Object的toString()相同但具有不同的返回类型。

相反,确保在方法体内部使用StringBuilder,但返回StringBuilder toString()

如,

@Override // this must return String
public String toString() {
    StringBuilder strBuilder = new StringBuilder();
    strBuilder.append("Data in Kennel " + name + " is:");

    for (Animal d : dogs) {
        strBuilder.append(d.toString() + "\n");
    }

    return strBuilder.toString();
}

答案 1 :(得分:0)

您似乎正在尝试制作类似Object's toString()的方法,该方法会返回StringBuilder。不要这样做。使用StringBuilder,您可以使用String将其转换为toString()

StringBuilder strb = new StringBuilder("SampleString");
String str = strb.toString();