32

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

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

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

4

6 回答 6

41

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

  • write 将只接受一个不能为空的字符串并返回void
  • append 将采用任何可以为 null 的 CharSequence 并返回 Writer 以便它可以被链接。

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

这些方法被重载,因此有一个

  • write(int)将其int转换为字符。append(char)必须是 char 类型。
  • write(char[] chars)接受一个 char 数组,没有等效的 append()。
于 2011-05-10T12:25:50.520 回答
7

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

于 2011-05-10T12:26:53.553 回答
5

Append()可以取 a CharSequence,而write()取 a String

由于String是 的实现CharSequence,您也可以将 a 传递Stringappend()。但是您也可以传递 a StringBuilderor StringBufferto append,这是您无法做到的write()

于 2011-05-10T12:25:37.210 回答
5

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

out.append(a).append(b).append(c)
于 2011-05-10T12:28:38.613 回答
2

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

于 2011-05-10T12:26:30.547 回答
1

在我看来,它是Appendable为了java.io.Writer提供与java.util.Formatter. 正如您所指出的,文档指出java.io.Writer这两种方法之间没有实际区别。

于 2011-05-10T12:27:35.357 回答