2009-03-18 11 views
2

J'en ai déjà vu un exemple, mais je n'ai jamais vraiment trouvé de matériel de référence traitant de ce problème. Je sais qu'il est possible de passer plusieurs paramètres, ints par exemple, en définissant la méthode commePasser plusieurs paramètres en un seul paramètre en Java

public void aMethod(int...a) 

Mais je ne sais pas plus à ce sujet que cela. J'ai vu un exemple, et il a retourné la moyenne des ints passés.
Est-ce une façon périmée de transmettre des paramètres? Est-il même acceptable de l'utiliser? Quelle est exactement la syntaxe lorsque vous faites cela?

Répondre

12

Cela s'appelle varargs (de la syntaxe C). Voir Sun's varargs guide pour un aperçu et ce JDC Tech Tip pour l'utilisation. Ce n'est pas périmé; il a été mis en requête car auparavant vous deviez créer un tableau ou une liste, ce qui était vraiment moche pour supporter quelque chose comme printf de C.

public void myMethod(String... args) { 
    for (String aString:args) { 
     System.out.println(aString); 
    } 
} 
+1

Quant à savoir quand l'utiliser, varargs est livré avec une pénalité de performance. Donc, ne l'utilisez que lorsque vous avez vraiment besoin de l'utiliser. J'ai rencontré de petits problèmes précieux dans java où je pensais 'homme, je pourrais vraiment utiliser varargs ici' (seulement printf vient à l'esprit) – wds

-1

Vous allez devoir passer une liste de ints à la méthode pour ce faire, quelque chose comme ceci:

public void aMethod(int[] list) 

ou ceci:

public void aMethod(ArrayList<int> list) 

Ce serait bien si Java avait quelque chose comme le mot clé params de C#, mais ce n'est pas le cas.

+0

Le but de la notation "varargs" est que vous n'avez PAS besoin de passer tableau ou liste. –

+0

Je ne suis pas vraiment un gars de Java, donc je n'avais aucune idée que cela existait! Bon à savoir! –

+0

-1: pour Java 5 et plus tard, cela est incorrect. –

Questions connexes