我不理解使用StringWriter
代替StringBuffer
。请帮我理解。
答案 0 :(得分:3)
这主要是API的问题。
StringWriter
实现Writer
API;即它可以用作" sink"用于捕获写入基于字符的输出流的字符。
StringBuilder
实现了CharSequence
API。这比Writer
更通用,因为它还支持访问已经编写的字符。此外,StringBuilder
具有在任意位置插入和删除的方法。
还应该注意,Writer
和StringBuilder
都实现了Appendable
API,这意味着对于某些用例,您可以编写一个可以接受{{{{ 1}}或StringWriter
用于捕获文本。
那么......你会用哪个?
如果您正在调用现有的库方法,则使用哪种方法与该方法的API兼容。如果两者兼容,您可以使用。
如果您正在设计API方法,则应该使用相应的超类/接口之一作为参数(或结果)类型,而不是硬连线StringBuilder
或StringWriter
。这将使您的方法更通用/更可重用。可能最常见的是StringBuilder
...但是取决于您的方法需要对字符接收器做什么,以及预测的客户端要求。