Astuce Java #3 : ...
Derrière le nom bizarre de cet article se cache une vraie astuce en Java, concernant la déclaration des méthodes.
Penchons nous sur le C. On retrouve en C une utilisation du
Si l'on analyse ce prototype, on peut constater que
Penchons nous maintenant sur l'équivalent de
Le prototype de cette méthode ressemble à ça :
De même qu'en C, nous avons une méthode qui prends un format à imprimer, et une liste d'arguments à remplacer dans le format. Un nombre non connu d'arguments, qui sont ici de type
Maintenant, voyons comment nous allons pouvoir créer nos propres méthodes en utilisant ce fameux
Première chose à faire, déclarer notre méthode :
Dans la méthode ainsi déclarée, nous prenons un nombre inconnu de chaînes de caractères (
L'exécution de ce morceau de code nous donne :
Nous avons donc une variable
Et voilà, nous n'avons plus qu'à appeler notre méthode :
Ce qui nous produira la sortie suivante :
Dernière remarque, le
PS : Cette entrée était la douzième. Les intéressés se reconnaîtrons ;)
... similaire à celle que nous allons retrouver en Java. Regardons en particulier le prototype de la méthode printf :
int printf (__const char *__restrict __format, ...);
Si l'on analyse ce prototype, on peut constater que
printf prends un premier argument, de type char*, appelé __format. Ensuite, nous retrouvons notre fameux ..., qui signifie littéralement : "Passez moi d'autres paramètres, autant que vous en voulez, je m'occuperais de les traiter". Notamment dans le cas de printf, ou nous allons lui passer une liste des valeurs à afficher sur la sortie standard.Penchons nous maintenant sur l'équivalent de
printf, mais en Java cette fois-ci. J'ai nommé la méthode PrintWriter.printf(String, Object...).Le prototype de cette méthode ressemble à ça :
public PrintWriter printf(String format, Object... args);
De même qu'en C, nous avons une méthode qui prends un format à imprimer, et une liste d'arguments à remplacer dans le format. Un nombre non connu d'arguments, qui sont ici de type
Object.Maintenant, voyons comment nous allons pouvoir créer nos propres méthodes en utilisant ce fameux
.... Nous allons essayer de créer une méthode qui prends un nombre inconnu de chaînes de caractères, et les affiche sur la sortie standard.Première chose à faire, déclarer notre méthode :
public void printStrings(String... arguments) {
}
Dans la méthode ainsi déclarée, nous prenons un nombre inconnu de chaînes de caractères (
String...), qui seront stockés dans la variable arguments. Maintenant, comment récupérer le contenu de arguments ? Quel est son type ? Demandons à Java de nous le dire ;)
public void printStrings(String... arguments) { System.out.println(arguments.getClass().getName()); }
L'exécution de ce morceau de code nous donne :
[Ljava.lang.String;
Nous avons donc une variable
arguments de type String[]. Il ne nous reste donc plus qu'à itérer sur ce tableau :
public void printStrings(String... arguments) { for (String argument : arguments) { System.out.println(argument); } }
Et voilà, nous n'avons plus qu'à appeler notre méthode :
printStrings("toto", "tata", "titi");
Ce qui nous produira la sortie suivante :
toto tata titi
Dernière remarque, le
... ne peut être utilisé que sur le dernier argument d'une méthode !PS : Cette entrée était la douzième. Les intéressés se reconnaîtrons ;)