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