В чем разница между методами добавления и записи в java.io.writer? - PullRequest
29 голосов
/ 10 мая 2011

Интерфейс java.io.Writer имеет два метода, называемых append и write. Каковы различия между этими двумя? Это даже говорит, что

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

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

Ответы [ 6 ]

33 голосов
/ 10 мая 2011

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

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

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

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

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

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

5 голосов
/ 10 мая 2011

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

out.append(a).append(b).append(c)
5 голосов
/ 10 мая 2011

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

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

1 голос
/ 10 мая 2011

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

1 голос
/ 10 мая 2011

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

...