【发布时间】:2012-11-24 18:00:09
【问题描述】:
是否可以配置 Java StringBuilder 类以在每次调用 append 之间追加一个新行?
【问题讨论】:
标签: java append stringbuilder
是否可以配置 Java StringBuilder 类以在每次调用 append 之间追加一个新行?
【问题讨论】:
标签: java append stringbuilder
我认为StringBuilder 没有内置该功能。既然你不能只是扩展它,你可以尝试使用装饰器模式......
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("\n")的原因