它是一个坏主意,使用StringBuilder或StringBuffer的作为Java方法的返回类型?我经常返回的字符串从Java方法的返回类型,但从来没有的StringBuilder或StringBuffer的连我都用他们的方法中完成的操作。
任何人都可以请教育我,如果它建议不要使用StringBuilder和StringBuffer作为方法的返回类型?如果没有,是什么原因吧?其中一个原因可能是,这两个是可变的。但它是如何做任何差别,因为我们经常会使用其他派生类型作为方法的返回类型,其是可变的。
可能有人请解释一下使用的StringBuffer和Builder作为方法的返回类型与代码,可能的缺点(如果有的话)?
StringBuffer
是旧的,通过StringBuilder
速度取代。
返回一个StringBuilder可能是不好的风格:有时,最好是通过一个StringBuilder作为参数。相比:
[最好作为参数:
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;
}
建造者模式的想法是从分离代表性建筑。
如果您使用的返回值继续构建一个对象的过程,这是绝对的罚款。在另一方面,它是坏的,如果返回值将不会被修改,并且已经作为一个代表。
没有什么具体的关于这些类,他们只是代表了一个可变的字符序列。你需要做的一件事是画建筑和代表性之间的一条线。