Dans les documents App Engine , à quoi servent les points de suspension ( JID...
) dans cette signature de méthode?
public MessageBuilder withRecipientJids(JID... recipientJids)
Quelle est la fonction de ces trois points?
Dans les documents App Engine , à quoi servent les points de suspension ( JID...
) dans cette signature de méthode?
public MessageBuilder withRecipientJids(JID... recipientJids)
Quelle est la fonction de ces trois points?
Réponses:
Ce sont des varargs Java. Ils vous permettent de passer n'importe quel nombre d'objets d'un type spécifique (dans ce cas, ils sont de type JID).
Dans votre exemple, les appels de fonction suivants seraient valides:
MessageBuilder msgBuilder; //There should probably be a call to a constructor here ;)
MessageBuilder msgBuilder2;
msgBuilder.withRecipientJids(jid1, jid2);
msgBuilder2.withRecipientJids(jid1, jid2, jid78_a, someOtherJid);
Voir plus ici: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
La façon d'utiliser les points de suspension ou les varargs à l'intérieur de la méthode est comme s'il s'agissait d'un tableau:
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
Cette méthode peut être appelée comme suit:
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
A l'intérieur PrintWithEllipsis
, le type de setOfStrings
est un tableau de String. Vous pouvez donc économiser du travail au compilateur et passer un tableau:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
Pour les méthodes varargs , un paramètre de séquence est traité comme étant un tableau du même type. Donc, si deux signatures diffèrent uniquement en ce que l'une déclare une séquence et l'autre un tableau, comme dans cet exemple:
void process(String[] s){}
void process(String...s){}
puis une erreur de compilation se produit.
Source: spécification du langage de programmation Java , où le terme technique est variable arity parameter
plutôt que le terme commun varargs
.
La notation à trois points (...) est en fait empruntée aux mathématiques et signifie "... et ainsi de suite".
Quant à son utilisation en Java, elle signifie varargs
, ce qui signifie que n'importe quel nombre d'arguments peut être ajouté à l'appel de méthode. Les seules limitations sont que le varargs
doit être à la fin de la signature de la méthode et il ne peut y en avoir qu'une par méthode.
Ce sont varargs
elles qui sont utilisées pour créer une méthode qui reçoit un nombre quelconque d'arguments.
Par exemple, la méthode PrintStream.printf l' utilise, car vous ne savez pas combien d'arguments vous utiliserez.
Ils ne peuvent être utilisés que comme position finale des arguments.
varargs
a été ajouté sur Java 1.5
Cela signifie que la méthode accepte un nombre variable d'arguments ("varargs") de type JID
. Dans la méthode, recipientJids
est présenté.
C'est pratique dans les cas où vous avez une méthode qui peut éventuellement gérer plus d'un argument de manière naturelle, et vous permet d'écrire des appels qui peuvent passer un, deux ou trois paramètres à la même méthode, sans avoir la laideur de créer un tableau à la volée.
Il permet également des idiomes tels que ceux sprintf
de C; voir String.format()
, par exemple.
…
, Unicode U + 2026. NetBeans 8 en Java 8 signale un "caractère illégal". Donc , Java varargs exigent le triple point final (période),...
.