2010-02-25 8 views
93

Es ist möglich, eine Methode zu deklarieren, die eine variable Anzahl von Parametern erlaubt?Java-Variablennummer oder Argumente für eine Methode

Welche Symbolik wird in der Definition verwendet, die angibt, dass die Methode eine variable Anzahl von Parametern zulassen soll?

Antwort: varargs

+7

Seit seinen Hausaufgaben wollen wir Ihre Frage nicht kennen, wir wollen nur wissen, dass Sie lernen. – HDave

Antwort

205

Das ist richtig. Sie können mehr darüber in the Oracle guide on varargs finden.

Hier ist ein Beispiel:

void foo(String... args) { 
    for (String arg : args) { 
     System.out.println(arg); 
    } 
} 

die als

genannt werden kann
foo("foo"); // Single arg. 
foo("foo", "bar"); // Multiple args. 
foo("foo", "bar", "lol"); // Don't matter how many! 
foo(new String[] { "foo", "bar" }); // Arrays are also accepted. 
foo(); // And even no args. 
+1

Ist es möglich, verschiedene Arten von Parametern zu tun? z.B. (String ... strs, int ... ints). Was ist mit irgendeiner Art von Argument in irgendeiner Reihenfolge? – trusktr

+4

@trusktr: Wenn Sie irgendein Objekt wollen, benutzen Sie einfach 'Object ...'. – BalusC

+1

Funktioniert das auch mit Primitiven? – trusktr

11

Ja, es ist möglich:

public void myMethod(int...numbers) { ... } 
10
Variable number of arguments 

Es ist möglich, eine variable Anzahl von Argumenten an eine Methode zu übergeben. Allerdings gibt gibt einige Einschränkungen:

  • Die variable Anzahl von Parametern alle vom gleichen Typ sein müssen
  • sie behandelt werden als ein Feld innerhalb der Methode
  • Sie müssen der letzte Parameter des Verfahrens sein

diese Einschränkungen zu verstehen, betrachten wir die Methode, im folgenden Code-Schnipsel, verwendet, um die größte ganze Zahl in einer Liste von ganzen Zahlen zurück:

private static int largest(int... numbers) { 
    int currentLargest = numbers[0]; 
    for (int number : numbers) { 
     if (number > currentLargest) { 
      currentLargest = number; 
     } 
    } 
    return currentLargest; 
} 

Quelle Oracle Certified Associate Java SE 7 Programmer Study Guide 2012

2

Wenn Sie verschiedene Arten von Argumenten verwenden, dann verwenden:

public void foo(Object... x) { 
    String first = x.length > 0 ? (String)x[0] : "Hello"; 
    int duration = x.length > 1 ? Integer.parseInt((String) x[1])  : 888; 
} 
foo("Hii",); 
foo("Hii", 146); 

für Sicherheit, wie folgt verwenden:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }

Der Hauptnachteil dieses Ansatzes ist, dass wenn die optionalen Parameter von verschiedenen Typen sind, Sie die statische Typprüfung verlieren. Bitte, siehe more variations.

0

Ja Java erlaubt vargs im Methodenparameter.

class  Varargs{public int add(int... numbers){ int result = 1; for(int number: numbers){result= result+numbers;  }  return result; }} 
+0

verwenden können Bitte verwenden Sie keine Links, um eine Antwort zu geben. Links können absterben, aber wenn Sie die tatsächliche Antwort in Ihren Post einfügen, kann sie für zukünftige Generationen durchsucht werden, falls jemand das gleiche Problem hat. – Moseleyi

Verwandte Themen