为什么使用StringWriter而不是StringBuffer?

时间:2015-12-18 06:59:04

标签: java

我不理解使用StringWriter代替StringBuffer。请帮我理解。

1 个答案:

答案 0 :(得分:3)

这主要是API的问题。

  • StringWriter实现Writer API;即它可以用作" sink"用于捕获写入基于字符的输出流的字符。

  • StringBuilder实现了CharSequence API。这比Writer更通用,因为它还支持访问已经编写的字符。此外,StringBuilder具有在任意位置插入和删除的方法。

还应该注意,WriterStringBuilder都实现了Appendable API,这意味着对于某些用例,您可以编写一个可以接受{{{{ 1}}或StringWriter用于捕获文本。

那么......你会用哪个?

  • 如果您正在调用现有的库方法,则使用哪种方法与该方法的API兼容。如果两者兼容,您可以使用。

  • 如果您正在设计API方法,则应该使用相应的超类/接口之一作为参数(或结果)类型,而不是硬连线StringBuilderStringWriter。这将使您的方法更通用/更可重用。可能最常见的是StringBuilder ...但是取决于您的方法需要对字符接收器做什么,以及预测的客户端要求。