java.io.Writer接口有兩種稱爲append和write的方法。這兩者有什麼區別?它甚至說,java.io.writer的append和write方法有什麼區別?
形式的這種方法的調用
out.append(c)
的行爲完全相同的方式調用out.write(c)
那麼什麼是有兩個方法的名稱變型的原因是什麼?
java.io.Writer接口有兩種稱爲append和write的方法。這兩者有什麼區別?它甚至說,java.io.writer的append和write方法有什麼區別?
形式的這種方法的調用
out.append(c)
的行爲完全相同的方式調用out.write(c)
那麼什麼是有兩個方法的名稱變型的原因是什麼?
append()和write()之間存在細微差異。所有這些都可以通過閱讀Javadocs來完成。暗示。 ;)
void
寫是在CharSequence可用之前創建的舊樣式格式。
這些方法被重載,以便有一個
write(int)
其中int
被轉換爲炭。 append(char)
必須是字符類型。Append()
可以採取CharSequence
,而write()
需要String
。
由於String
是CharSequence
的實現,您還可以將String
傳遞給append()
。但是你也可以通過StringBuilder
或StringBuffer
到append
,你不能用write()
。
Writer.append(c)
返回Writer實例。因此,您可以鏈接多個呼叫以附加,例如out.append("Hello").append("World")
;
在我看來就像它的Appendable
接口java.io.Writer
工具,以提供與java.util.Formatter
兼容性的副產品。正如你所指出的,文件指出,對於java.io.Writer
這兩種方法沒有實際的區別。
你可以從文檔看,還追加返回你剛纔寫的,這樣就可以執行多個作家追加如:
out.append(a).append(b).append(c)
這是否意味着我應該追加使用,而不是寫?爲什麼他們不能僅僅使用CharSequence寫入來調用重載,並讓舊的寫入方法也返回寫入器呢? – Svish 2011-05-10 12:28:19
@Svish,這會破壞向後兼容性。編譯代碼時,返回類型是字節代碼簽名的一部分,如果不重新編譯源代碼,您將無法使用新方法。你也可以用Java中的write(char)來代替'write(int)'(這是一些代碼的改變),但你確實需要重新編譯它。如果你沒有偏好,我建議你使用'append'。它有這個名字的原因是與始終使用append的StringBuffer一致。 StringBuilder/StringBuffer/Writer現在都共享Appendable接口。 – 2011-05-10 12:33:25