java.io.writer的append和write方法有什么区别?

java.io.Writer接口有两个名为append和write的方法。 这两者有什么区别? 它甚至说

调用out.append(c)forms的此方法的行为与调用out.write(c)完全相同。

那么有两个方法名称变体的原因是什么?

append()和write()之间存在细微差别。 所有这些都可以通过阅读Javadocs来解决。 暗示。 ;)

  • write只接受一个不能为null的String并返回void
  • append将接受任何可以为null的CharSequence并返回Writer,以便它可以被链接。

write是在CharSequence可用之前创建的旧样式格式。

这些方法是重载的,所以有一个

  • write(int)其中int被强制转换为char。 append(char)必须是char类型。
  • write(char[] chars)接受一个char数组,没有等效的append()。

可能符合Appendable接口: http : //download.oracle.com/javase/6/docs/api/java/lang/Appendable.html

Append()可以采用CharSequence ,而write()采用String

由于StringCharSequence的实现,因此您还可以将String传递给append() 。 但是你也可以传递一个StringBuilderStringBufferappend ,你不能用write()来做。

正如您从文档中看到的那样,append还会返回您刚刚编写的Writer,以便您可以执行多个附加,例如:

 out.append(a).append(b).append(c) 

在我看来,它是java.io.Writer实现的Appendable接口的副产品,以提供与java.util.Formatter兼容性。 如您所述,文档指出对于java.io.Writer ,两种方法之间没有实际区别。

Writer.append(c)返回Writer实例。 因此,您可以链接多个要追加的调用,例如out.append("Hello").append("World") ;