Arguments en nombre variable

(((varargs)) images/orangebelt.png

Il est possible de spécifier comme dernier paramètre d’un appel des arguments en nombre variable (varargs).

La forme générale:

<constructeur ou méthode> ( <paramètres ,> <Type>... <nom>) {
     /// code constructeur ou code méthode>
}

Pour le code réalisant ce paramètre est un tableau (éventuellement de taille zéro: mais son existence est pratiquement garantie).

Exemple:

public static int opEntière (char op, String... args) {
   int res = 0 ;
   // autre facilité d'écriture possible ici
   // (boucle foreach!)
   for (int ix = 0 ; ix < args.length ;ix++){
        // permet d'analyser une chaine -> entier
       int arg = Integer.parseInt(args[ix]) ;
       switch(op) {
            case '+' : res += arg ; break
             °°°°// suite code
        }
    }
    return res ;
}

Du point de vue des codes appelant on a plusieurs possibilités: - passer autant d’arguments de ce type que nécessaire - passer un tableau de ce type - ne passer aucun argument (génère un tableau de taille zéro pour le code réalisant)

char op ; String[] tbStr ; String strVal ;
°°°°// codes d'initialisations
int res = MaClasseExemple.opEntière( op, tbStr)) ;
°°°°// codes
res = MaClasseExemple.opEntière( op, "1", "-23", strVal)) ;
// LEGAL
res = MaClasseExemple.opEntière( op) ;

--exercices--