使用的StringBuffer和StringBuilder的在Java中的方法返回类型

问题描述 投票:1回答:2

它是一个坏主意,使用StringBuilder或StringBuffer的作为Java方法的返回类型?我经常返回的字符串从Java方法的返回类型,但从来没有的StringBuilder或StringBuffer的连我都用他们的方法中完成的操作。

任何人都可以请教育我,如果它建议不要使用StringBuilder和StringBuffer作为方法的返回类型?如果没有,是什么原因吧?其中一个原因可能是,这两个是可变的。但它是如何做任何差别,因为我们经常会使用其他派生类型作为方法的返回类型,其是可变的。

可能有人请解释一下使用的StringBuffer和Builder作为方法的返回类型与代码,可能的缺点(如果有的话)?

java string stringbuilder return-type stringbuffer
2个回答
2
投票

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;
}

1
投票

建造者模式的想法是从分离代表性建筑。

如果您使用的返回值继续构建一个对象的过程,这是绝对的罚款。在另一方面,它是坏的,如果返回值将不会被修改,并且已经作为一个代表。

没有什么具体的关于这些类,他们只是代表了一个可变的字符序列。你需要做的一件事是画建筑和代表性之间的一条线。

© www.soinside.com 2019 - 2024. All rights reserved.