Utilisation des points de suspension ( ... ) en Java? [dupliquer]

Cette question a déjà une réponse ici:

Je regardais à travers du code et j'ai vu la notation suivante. Je ne sais pas ce que signifient les trois points et comment vous les appelez.

void doAction(Object...o);

Merci.

23
demandé sur Narendra Pathai 2012-12-02 06:44:17

3 réponses

Cela signifie que cette méthode peut recevoir plus d'un Objet en tant que paramètre. Pour mieux sous-estimer, Vérifiez l'exemple suivant à partir de ici :

Les points de suspension (...) identifie un nombre variable d'arguments, et est démontré dans la méthode de sommation suivante.

static int sum (int ... numbers)
{
   int total = 0;
   for (int i = 0; i < numbers.length; i++)
        total += numbers [i];
   return total;
}

Appelle la méthode de sommation avec autant d'entiers délimités par des virgules arguments que vous désirez - dans les limites de la JVM. Quelques exemples: somme (10, 20) et la somme (18, 20, 305, 4).

Ceci est très utile car cela permet à votre méthode de devenir plus abstraite. Vérifiez aussi ce bel exemple de SO, SI l'utilisateur profite de la ... notation pour faire une méthode pour concaténer des tableaux de chaînes en Java.

Un autre exemple de variable argument méthode en Java 5

public static void test(int some, String... args) {
        System.out.print("\n" + some);
        for(String arg: args) {
            System.out.print(", " + arg);
        }
    }

Comme mention dans la section commentaire:

Notez également que si la fonction passe d'autres paramètres de différents types que varargs paramètre, le paramètre vararg doit être le dernier paramètre dans la déclaration de fonction test public void (Typev ... v , Type1 a, Type2 b) ou test public void (Type1 a, Typev ... v recipientJids, Type2 b) - est illégal . Seulement test public void (Type1 a, Type2 b, Typev ... v)

28
répondu dreamcrash 2017-05-23 12:17:41

Ça s'appelle VarArgs http://www.javadb.com/using-varargs-in-java . dans ce cas, cela signifie que vous pouvez mettre plusieurs instances D'objet comme paramètre à doAction() autant que vous le souhaitez:

doAction(new Object(), new Object(), new Object());
1
répondu Yohanes Gultom 2012-12-02 02:48:44

Je vais vous écrire un exemple afin d'expliquer ce qu'ils signifient par (...).

Vous pouvez définir un paramètre qui peut accepter des arguments variables (varargs) dans vos méthodes. Voici un exemple de Class Employee, qui définit une méthode daysOffWork qui accepte des arguments variables:

class Employee { 
   public int daysOffWork(int... days) {
         int daysOff = 0;
         for (int i = 0; i < days.length; i++)
         daysOff += days[i];
         return daysOff;
        } 
}

Les points de suspension (...) qui suit le type de données indique que le paramètre de méthode

Jours peut être passé un tableau ou plusieurs valeurs séparées par des virgules.

0
répondu BERGUIGA Mohamed Amine 2015-08-17 19:04:23