2015-12-18 101 views
-5

我不明白使用StringWriter代替StringBuffer。请帮我理解。为什么使用StringWriter而不是StringBuffer?

+1

请参阅本http://stackoverflow.com/questions/27221292/when-should-i-use-javas-stringwriter –

+0

也http://www.coderanch.com/t/380184/java/java/wat-diff-stringbuffer-stringwriter – Roshan

+4

如果你有一个你想调用的接受'Writer'的API,你想在内存中创建一个字符串,你会怎么做? –

回答

3

这在很大程度上是API的问题。

  • StringWriter实现了Writer API;即它可以用作捕获写入基于字符的输出流的字符的“信宿”。

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

还应该注意的是WriterStringBuilder实施Appendable API,这意味着,对于一些使用情况,您可以编写能够接受一个StringWriter或捕获文本StringBuilder一个方法。

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

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

  • 如果要设计的API方法,你应该使用相应的超类/接口作为参数(或结果)的一种类型的而不是硬布线StringWriterStringBuilder。这会让你的方法更一般/更可重用。可能是最一般的是Appendable ......但取决于你的方法需要做什么与角色接收器,并预测客户端的要求。

相关问题