blog.bressure.net

Carnet professionnel d'un informaticien

Langage

Liste de paramètres variable des méthodes en Java

admin

Depuis le JDK 1.5 qui fut une petite révolution il y a presque 10 ans de cela, il est possible de déclarer des méthodes ayant une liste de paramètre de taille variable afin de pouvoir appeler la méthode avec 1, 2 ou n’importe quel nombre de paramètre. Cela rappelait la fonction printf du langage C.

C’est en effet bien pratique d’appeler une méthode en lui passant le nombre d’argument que l’on veut. Une exemple canonique serait une méthode qui renvoie la concaténation des chaînes en paramètre.

String concat(String... arg){
    String concatenation = "";
    // corps de la méthode
    return concatenation;
}

Que l’on pourra appeler en faisant

String s = null;
s = concat("ma"," ","chaine"," ", "de", " ", "caractères"); // "ma chaine de caractère"

Il s’agit néanmoins d’un sorte de goodie du compilateur pour nous éviter de passer un tableau car c’est comme ça que l’on faisait avant. On déclarait la méthode comme suit:

String concat(String[] arg){
    // corps de la méthode
}

Puis lors de l’appel on s’efforçait de passe un tableau avec le surcoût de création de celui-ci:

String s = contact(new String[]{"ma"," ","chaine"," ","de"," ","caractères"});

Bien vu. On notera la limitation suivante, le paramètre variable doit être le dernier paramètre de la signature. Donc il ne peut y en avoir qu’un seul. On ne peut pas par exemple utiliser les points de suspension pour définir une méthode avec en premier lieu une liste d’un type et en second lieu une liste d’un autre type.

void neCompilePas(Object... lo, String... listStr) // le compilateur n'en veut pas
void compileBien(Object o, String... listStr) // on a le droit
Tags:

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Back to top