# Was bedeuten die Drei Punkte in einem Methodenkopf?



## Maik.Neumann (14. Jun 2014)

Guten Tag !

Es gibt in Java wohl die Möglichkeit innerhalb eines Methodenkopfes 3 Punkte zu setzen, so wie in diesem Beispiel:


```
public void testPrint(Integer i, Auto auto, String... name){
    //do something
}
```

Was soll das bezwecken? Wofür kann man dieses Konstrukt nutzen?

Danke und Gruß
Maik


----------



## knilch (14. Jun 2014)

Hi,
die 3 Punkte bedeuten, dass eine beliebige Anzahl von Strings mitgegeben werden können.
Innerhalb der Methode wird dann auf alle Strings wie ein Array zugegriffen.
In etwa so

```
public void testPrint(Integer i, Auto auto, String... name){
    for (String string: name) {
      // mach was mit jedem stirng;
   }
}
```
Einsetzen kannst du das, wenn du unterschiedliche viele Strings (oder int, double etc..) in einer Methode mitgeben möchtest.


----------



## Tobse (14. Jun 2014)

Was knlich gesagt hat stimmt alles, nur zur Ergänzung:

Das ganze wird Varargs genannt. Ein Varargs-Argument muss immer das letzte der Methode sein, folgendes ist falsch:

```
public void doSomething(String a, Object... b, InputStream c)
```

Varargs machen auch nur dort sinn, wo die Menge an Argumente wirklich egal ist. Wenn eine Methode 8 doubles bekommen soll dann ist folgendes zu verwenden:

```
public void doSomething(double a, double a2, double a3, double a4, double a5, double a6, double a7, double a8)
```

wohingegen dashier dann einfach irreführend ist:

```
public void doSomething(double... a)
{
    if (a.length != 8) // rummeckern
}
```


Gute Beispiele für Varargs sind printf oder so etwas hier:

```
public double average(double... werte)
{
    double sum = 0;
    for (double d : werte)
    {
        sum += d;
    }
    return sum / werte.length;
}
average(2, 4); // 3
average(2, 6, 4, 8, 10); // 6
```


----------



## Beatsleigher (15. Jun 2014)

Wie meine Vorgänger bereits gesagt haben; es bedeutet, dass eine beliebige Anzahl von Elementen angegeben werden kann.

Das ist zum Beispiel nützlich, wenn du durch mehrere Dateien suchst, oder Prozesse mit vielen verschiedenen Argumenten ausführen willst.

Wenn du damit arbeiten willst, musst du darauf achten, dass das am Ende der Parameter machst:

private void method(String... arg0, String... arg1) != richtig

private void method(String[] arg0, String... arg1) == richtig

Sent from my GT-I9505 using Tapatalk


----------

