Java StringBuilder是否在要追加的调用之间删除新行?

Java StringBuilder是否在要追加的调用之间删除新行?,java,append,stringbuilder,Java,Append,Stringbuilder,是否可以将JavaStringBuilder类配置为在每次要追加的调用之间追加一行新行?我认为StringBuilder没有内置该功能。既然你不能仅仅扩展它,你可以尝试使用decorator模式 class NewlineStringBuilder { private StringBuilder delegate; public NewlineStringBuilder() { delegate = new StringBuilder(); }

是否可以将Java
StringBuilder
类配置为在每次要追加的调用之间追加一行新行?

我认为
StringBuilder
没有内置该功能。既然你不能仅仅扩展它,你可以尝试使用decorator模式

class NewlineStringBuilder {

    private StringBuilder delegate;

    public NewlineStringBuilder() {
        delegate = new StringBuilder();
    }

    public NewlineStringBuilder appendLine(String str) {
        delegate.append(str).append("\n");
        return this;
    }

    public String toString() {
        return delegate.toString();
    }
}
另外,Java也可以支持这种简写,这很有用,因为装饰器不必重新实现所有需要从装饰类中获得的方法,但是由于原始资源完全未公开,因此更危险,因此必须权衡权衡权衡:

StringBuilder message = new StringBuilder();
class AppendingStringBuilder {
    private final StringBuilder builder;
    AppendingStringBuilder(StringBuilder builder) {
        this.builder = builder;
    }
    public AppendingStringBuilder append(String str) {
        builder.append(str + "\n");
        return this;
    }
}
AppendingStringBuilder messageHelper;
// ...

自动-我不想每次调用append时都这样做。我猜这背后有一些技术原因,但您能解释一下您的问题吗?您不能/不想只调用
append(“\n”)
的原因是重复的代码。我认为这在软件开发社区中是显而易见的,为什么要避免这种情况。是的,这是我想到的。如果没有其他现成的东西,我可能会使用它(这个类被声明为final)。