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

Svi*_*ish 29 java writer

java.io.Writer的接口有两个方法称为追加和写入.这两者有什么不同?它甚至说

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

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

Pet*_*rey 33

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().

  • @Svish,这将打破向后兼容性.编译代码时,返回类型是字节代码签名的一部分,如果不从源代码重新编译代码,您将无法使用新方法.你也可以用Java中的`write(char)`代替`write(int)`(某些代码会改变),但是你需要重新编译它.如果你没有偏好,我建议你使用`append`.它具有此名称的原因是与始终使用append的StringBuffer一致.StringBuilder/StringBuffer/Writer现在共享Appendable接口. (3认同)

Tom*_*rys 5

Append()可以拿a CharSequence,而write()拿a String.

既然String是一个实现CharSequence,你也可以传递Stringappend().但你也可以通过一个StringBuilderStringBufferappend,你不能这样做write().


Dav*_*vid 5

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

out.append(a).append(b).append(c)
Run Code Online (Sandbox Code Playgroud)