Est-il possible de déclarer une méthode qui autorisera un nombre variable de paramètres?
Quel est le symbolisme utilisé dans la définition qui indique que la méthode doit autoriser un nombre variable de paramètres?
Réponse: varargs
Est-il possible de déclarer une méthode qui autorisera un nombre variable de paramètres?
Quel est le symbolisme utilisé dans la définition qui indique que la méthode doit autoriser un nombre variable de paramètres?
Réponse: varargs
Réponses:
C'est correct. Vous pouvez en savoir plus à ce sujet dans le guide Oracle sur varargs .
Voici un exemple:
void foo(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
qui peut être appelé comme
foo("foo"); // Single arg.
foo("foo", "bar"); // Multiple args.
foo("foo", "bar", "lol"); // Don't matter how many!
foo(new String[] { "foo", "bar" }); // Arrays are also accepted.
foo(); // And even no args.
Object...
.
Object... args
fonctionnera avec les primitives en raison de la boîte automatique .
varargs.length
Variable number of arguments
Il est possible de passer un nombre variable d'arguments à une méthode. Cependant, il existe certaines restrictions:
Pour comprendre ces restrictions, considérez la méthode, dans l'extrait de code suivant, utilisée pour renvoyer le plus grand entier dans une liste d'entiers:
private static int largest(int... numbers) {
int currentLargest = numbers[0];
for (int number : numbers) {
if (number > currentLargest) {
currentLargest = number;
}
}
return currentLargest;
}
source Oracle Certified Associate Java SE 7 Programmer Study Guide 2012
Pour différents types d'arguments, il y a 3 points :
public void foo(Object... x) {
String myVar1 = x.length > 0 ? (String)x[0] : "Hello";
int myVar2 = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
Alors appelle-le
foo("Hii");
foo("Hii", 146);
pour la sécurité, utilisez comme ceci:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
Le principal inconvénient de cette approche est que si les paramètres facultatifs sont de types différents, vous perdez la vérification de type statique. Veuillez voir plus de variations .
Ouais ... depuis Java 5: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Oui Java autorise le vargs
paramètre de méthode.
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}