web-dev-qa-db-fra.com

Quelle est la différence entre les méthodes append et write de Java.io.writer?

L'interface Java.io.Writer a deux méthodes appelées append et write. Quelles sont les différences entre ces deux? Il dit même que

Un appel de cette méthode de la forme out.append(c) se comporte exactement de la même manière que l'invocation out.write(c)

alors, quelle est la raison d'avoir deux variantes de nom de méthode?

30
Svish

Il existe des différences mineures entre append () et write (). Tout cela, vous pouvez travailler en lisant les Javadocs. Allusion. ;)

  • write ne prendra qu'une chaîne qui ne doit pas être nulle et renvoie void
  • append prendra toute CharSequence qui peut être nulle et retournera l'enregistreur afin qu'il puisse être chaîné.

write est un format de style plus ancien créé avant que CharSequence ne soit disponible.

Ces méthodes sont surchargées de sorte qu'il y a un

  • write(int) où le int est converti en caractère. append(char) doit être de type char.
  • write(char[] chars) prend un tableau de char, il n'y a pas d'équivalent append ().
33
Peter Lawrey

Probablement pour se conformer à l'interface Appendable: http://download.Oracle.com/javase/6/docs/api/Java/lang/Appendable.html

7
jjwchoy

Append() peut prendre un CharSequence, tandis que write() prend un String.

Puisque String est une implémentation de CharSequence, vous pouvez également passer un String à append(). Mais vous pouvez aussi passer un StringBuilder ou StringBuffer à append, ce que vous ne pouvez pas faire avec write().

5
Tom Jefferys

Comme vous pouvez le voir dans la documentation, append renvoie également le Writer dans lequel vous venez d'écrire afin que vous puissiez effectuer plusieurs ajouts tels que:

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

Writer.append(c) renvoie l'instance de Writer. Ainsi, vous pouvez enchaîner plusieurs appels à ajouter, par exemple out.append("Hello").append("World");

1
joe776

Il me semble que c'est un sous-produit de l'interface Appendable qui Java.io.Writer implémente afin d'assurer la compatibilité avec Java.util.Formatter. Comme vous l'avez noté, la documentation indique que pour Java.io.Writer il n'y a pas de différence pratique entre les deux méthodes.

1
aroth