В чем разница между методами добавления и записи java.Ио.писатель?

java.Ио.Писатель интерфейс имеет два метода, называемых append и write. В чем разница между этими двумя? Он даже говорит, что

вызов этого метода формы out.append(c) ведет себя точно так же, как и вызов out.write(c)

Итак, какова причина наличия двух вариантов имени метода?

6 ответов


существуют незначительные различия между append () и write (). Все это вы можете решить, прочитав Javadocs. Намек. ;)

  • write будет принимать только строку, которая не должна быть null и возвращает void
  • append примет любой CharSequence который может быть null и возвратит писателя поэтому его можно приковать.

write-это более старый формат стиля, созданный до появления CharSequence.

эти методы перегружены, так что есть

  • write(int) здесь int брошен в char. append(char) должен быть тип char.
  • write(char[] chars) принимает массив char, нет эквивалентного добавления ().

вероятно, чтобы соответствовать прилагаемому интерфейсу:http://download.oracle.com/javase/6/docs/api/java/lang/Appendable.html


Append() можно взять CharSequence, тогда как write() принимает String.

С String реализация CharSequence, вы также можете передать String to append(). Но вы также можете пройти StringBuilder или StringBuffer to append, которые вы не можете сделать с write().


Как вы можете видеть из документации, append также возвращает писатель вы только что написали, так что вы можете выполнить несколько приложений, таких как:

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

мне кажется, что это побочный продукт Appendable интерфейс java.io.Writer реализует для обеспечения совместимости с java.util.Formatter. Как вы отметили, документация указывает, что для java.io.Writer между этими двумя методами нет практической разницы.


Writer.append(c) возвращает экземпляр Writer. Таким образом, вы можете связать несколько вызовов для добавления, например out.append("Hello").append("World");