web-dev-qa-db-fra.com

Java: envoi de plusieurs paramètres à la méthode

Voici mon scénario:

Je dois appeler une méthode. Soit les paramètres: Paramètre1, Paramètre2, .., .., Paramètre N Mais les paramètres à envoyer à la méthode peuvent changer dans chaque cas.

Cas 1: Seul le paramètre 1 est envoyé

Cas 2: Une combinaison de paramètres est envoyée

Cas 3: Tous les paramètres sont envoyés

Quelle est la meilleure façon d'y parvenir dans Java?

20
Srinivas R

La solution dépend de la réponse à la question - tous les paramètres seront-ils du même type et si oui, chacun sera-t-il traité de la même manière?

Si les paramètres ne sont pas du même type ou, plus important encore, ne seront pas traités de la même manière, vous devez utiliser la surcharge de méthode:

public class MyClass
{
  public void doSomething(int i) 
  {
    ...
  }

  public void doSomething(int i, String s) 
  {
    ...
  }

  public void doSomething(int i, String s, boolean b) 
  {
    ...
  }
}

Si toutefois chaque paramètre est du même type et sera traité de la même manière, vous pouvez utiliser la fonction d'argument variable en Java:

public MyClass 
{
  public void doSomething(int... integers)
  {
    for (int i : integers) 
    {
      ...
    }
  }
}

Évidemment, lorsque vous utilisez des arguments variables, vous pouvez accéder à chaque argument par son index, mais je déconseille cela car dans la plupart des cas, il fait allusion à un problème dans votre conception. De même, si vous vous trouvez à faire des vérifications de type pendant que vous parcourez les arguments, votre conception doit être revue.

36
Nick Holt

Supposons que vous ayez une méthode void qui imprime de nombreux objets;

public static void print( Object... values){
   for(Object c : values){
      System.out.println(c);
   }
}

Exemple ci-dessus, j'ai utilisé vararge comme argument qui accepte des valeurs de 0 à N.

D'après les commentaires: Et si 2 chaînes et 5 entiers ??

Répondre:

print("string1","string2",1,2,3,4,5);
11
Azad

Vous pouvez utiliser varargs

public function yourFunction(Parameter... parameters)

Voir aussi

notation par points Java à arguments multiples - Varargs

7
erencan