64 votes

Méthode Java avec des arguments illimités

Le framework Spring utilise des méthodes où vous pouvez passer autant d'arguments que vous le souhaitez.

Je voudrais écrire une fonction qui puisse également prendre une quantité illimitée de données. Comment cette fonction est-elle appelée pour que je puisse la lire ? Ou comment puis-je la définir ?

0 votes

Quelle classe possède cette méthode ? Peut-être que c'est comme static main(String[] args)

0 votes

Définissez "quantité illimitée de données".

161voto

Bozho Points 273663

Cela s'appelle varargs .

Il permet à une méthode de prendre un nombre quelconque d'arguments. Ils sont accessibles sous forme de tableau dans la méthode :

public void foo(String... args) {
    for (String arg : args) {
      // do smth with arg.
     }
}

C'est sucre syntaxique . Le compilateur masque la création du tableau, donc au lieu de

 bar.foo(new String[] {"1", "2", "3"});

vous écrivez

 bar.foo("1", "2", "3");

13voto

nicovank Points 2547

Pour ajouter à la réponse de Bozho, vous pouvez également avoir d'autres arguments dans votre méthode avant les varargs :

// foo(13, "foo", "bar", "baz");
// will print:
// 13 - |foo||bar||baz|
public void foo(int a, String... b) {
    System.out.println(a + " - ");

    for (String c : b) {
        System.out.print("|" + c + "|");
    }
}

Cependant, vous ne pouvez pas avoir d'arguments d'un type différent après. Ceux-ci ne fonctionnent pas :

public void bar(String... b, int b);
public void foo(int a, String... b, int b);

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