2015-12-18 95 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 ......但取決於你的方法需要做什麼與角色接收器,並預測客戶端的要求。

相關問題