Java Language
Varargs (argument variable)
Recherche…
Remarques
Un argument de méthode «varargs» permet aux appelants de cette méthode de spécifier plusieurs arguments du type désigné, chacun étant un argument distinct. Il est spécifié dans la déclaration de méthode par trois points ASCII ( ...
) après le type de base.
La méthode elle-même reçoit ces arguments sous la forme d'un tableau unique, dont le type d'élément est le type de l'argument varargs. Le tableau est créé automatiquement (bien que les appelants soient toujours autorisés à passer un tableau explicite au lieu de transmettre plusieurs valeurs en tant qu'arguments de méthode distincts).
Règles pour varargs:
- Varargs doit être le dernier argument.
- Il ne peut y avoir qu'un seul Varargs dans la méthode.
Vous devez suivre les règles ci-dessus sinon le programme donnera une erreur de compilation.
Spécifier un paramètre varargs
void doSomething(String... strings) {
for (String s : strings) {
System.out.println(s);
}
}
Les trois périodes après le type de paramètre final indiquent que l'argument final peut être passé en tant que tableau ou en tant que séquence d'arguments. Varargs ne peut être utilisé que dans la position d'argument final.
Travailler avec les paramètres de Varargs
En utilisant varargs comme paramètre pour une définition de méthode, il est possible de passer un tableau ou une séquence d’arguments. Si une séquence d'arguments est passée, ils sont automatiquement convertis en tableau.
Cet exemple montre à la fois un tableau et une séquence d'arguments passés dans la méthode printVarArgArray()
et leur traitement identique dans le code de la méthode:
public class VarArgs {
// this method will print the entire contents of the parameter passed in
void printVarArgArray(int... x) {
for (int i = 0; i < x.length; i++) {
System.out.print(x[i] + ",");
}
}
public static void main(String args[]) {
VarArgs obj = new VarArgs();
//Using an array:
int[] testArray = new int[]{10, 20};
obj.printVarArgArray(testArray);
System.out.println(" ");
//Using a sequence of arguments
obj.printVarArgArray(5, 6, 5, 8, 6, 31);
}
}
Sortie:
10,20,
5,6,5,8,6,31
Si vous définissez la méthode comme celle-ci, cela donnera des erreurs de compilation.
void method(String... a, int... b , int c){} //Compile time error (multiple varargs )
void method(int... a, String b){} //Compile time error (varargs must be the last argument