108 votes

Java "params" dans la signature de la méthode ?

En C#, si vous souhaitez qu'une méthode ait un nombre indéterminé de paramètres, vous pouvez faire du paramètre final de la signature de la méthode un params de sorte que le paramètre de la méthode ressemble à un tableau mais permet à toute personne utilisant la méthode de passer autant de paramètres de ce type que l'appelant le souhaite.

Je suis presque sûr que Java supporte un comportement similaire, mais je ne trouve pas comment le faire.

191voto

David Grant Points 8477

En Java, il s'appelle varargs et la syntaxe ressemble à celle d'un paramètre ordinaire, mais avec une ellipse ("...") après le type :

public void foo(Object... bar) {
    for (Object baz : bar) {
        System.out.println(baz.toString());
    }
}

Le paramètre vararg doit toujours être le dernier dans la signature de la méthode, et on y accède comme si l'on recevait un tableau de ce type (par ex. Object[] dans ce cas).

11voto

Stefano Driussi Points 1929

Ceci fera l'affaire en Java

public void foo(String parameter, Object... arguments);

Vous devez ajouter trois points ... et le varagr doit être le dernier paramètre de la signature de la méthode.

3voto

Levent Divilioglu Points 1026

Comme il est écrit sur les réponses précédentes, c'est varargs et déclaré avec ellipsis ( ... )

De plus, vous pouvez soit passer les types de valeur et/ou les types de référence ou les deux mélangés (google Autoboxing ). En outre, vous pouvez utiliser le paramètre de la méthode comme un tableau, comme le montre l'exemple suivant printArgsAlternate ci-dessous.

Code démo

public class VarargsDemo {

    public static void main(String[] args) {
        printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
        printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
    }

    private static void printArgs(Object... arguments) {
        System.out.print("Arguments: ");
        for(Object o : arguments)
            System.out.print(o + " ");

        System.out.println();
    }

    private static void printArgsAlternate(Object... arguments) {
        System.out.print("Arguments: ");

        for(int i = 0; i < arguments.length; i++)
            System.out.print(arguments[i] + " ");

        System.out.println();
    }

}

Sortie

Arguments: 3 true Hello! true 25.3 a X 
Arguments: 3 true Hello! true 25.3 a X

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X