java.io.Writer接口有两个名为append和write的方法。这两者有什么不同?它甚至说
调用
out.append(c)
形式的此方法的行为与调用out.write(c)
完全相同
那么有两个方法名称变体的原因是什么?
答案 0 :(得分:33)
append()和write()之间存在细微差别。所有这些都可以通过阅读Javadocs来解决。暗示。 ;)
void
write是在CharSequence可用之前创建的旧样式格式。
这些方法已经过载,因此存在
write(int)
其中int
被转换为char。 append(char)
必须是char类型。write(char[] chars)
接受一个char数组,没有等效的append()。答案 1 :(得分:7)
答案 2 :(得分:5)
Append()
可以使用CharSequence
,而write()
可以使用String
。
由于String
是CharSequence
的实现,您还可以将String
传递给append()
。但您也可以将StringBuilder
或StringBuffer
传递给append
,但write()
无法做到这一点。
答案 3 :(得分:5)
正如您从文档中看到的那样,append还会返回您刚刚编写的Writer,以便您可以执行多个附加,例如:
out.append(a).append(b).append(c)
答案 4 :(得分:1)
Writer.append(c)
返回Writer实例。因此,您可以链接多个要追加的调用,例如out.append("Hello").append("World")
;
答案 5 :(得分:1)
在我看来,它是Appendable
java.io.Writer
接口的副产品,java.util.Formatter
为了提供与java.io.Writer
的兼容性而实施。如您所述,文档指出对于{{1}},两种方法之间没有实际区别。