在 Java 中使用 StringBuilder 或 StringBuffer 作为方法的返回类型是个坏主意吗?我经常从 Java 方法返回 String 作为返回类型,但从来没有返回 StringBuilder 或 StringBuffer,即使我在方法中使用它们完成了操作。
如果建议不要使用 StringBuilder 和 StringBuffer 作为方法返回类型,谁能告诉我吗?若否,原因为何?原因之一可能是这两个是可变的。但是它有什么不同,因为我们经常使用其他派生类型作为可变的方法返回类型。
有人可以用代码解释使用 StringBuffer 和 Builder 作为方法返回类型的缺点(如果有的话)吗?
最佳答案
StringBuffer
是旧的并且被 StringBuilder
取代以提高速度。
返回 StringBuilder 可能是一种糟糕的风格:有时将 StringBuilder 作为参数传递会更好。比较:
[best] 作为参数:
void dump(StringBuilder sb) {
sb.append(name);
for (Foo child : children) {
child.dump(sb);
}
}
[无问题,低效] 与聚合的不可变值比较:
String toString() {
return name + left.toString() + right.toString();
}
[丑陋] 与返回可变值的比较:
StringBuilder dump() {
StringBulder sb = new StringBuilder();
for (Foo child : children) {
sb.append(child.dump()); // Inefficient
}
return sb;
}
关于java - 在 Java 中使用 StringBuffer 和 StringBuilder 作为方法返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54628163/