Helmichs Informatik-Lexikon

variable Parameter

Oft werden Methoden benötigt, bei denen man beim Entwurf noch nicht weiß, wie viele Werte als Parameter übergeben werden müssen. Um dieses Problem zu lösen, gibt es mehrere Verfahren, die im Folgenden näher erläutert werden. Als Beispiel wählen wir eine einfache Additions-Methode, die die übergebenen int-Zahlen addieren soll.

Verfahren 1
Overloading von Methoden

Man könnte eine add-Methode für zwei int-Zahlen schreiben, dann eine add-Methode für drei int-Zahlen, eine für vier, eine für fünf und eine für sechs int-Zahlen. Und so könnte man weitermachen. Technisch ist das durchaus möglich, weil man Methoden ja überladen kann (siehe "Overloading"). Praktisch ist das aber recht ungeschickt, es sei denn, die Zahl der verschiedenen Methoden ist eng begrenzt auf zwei oder drei verschiedene.

Verfahren 2
Übergabe eines Arrays als Parameter

Wenn man nicht weiß, wie viele Zahlen addiert werden sollen, kann man einfach einen Parameter vom Typ int[] einsetzen:

public int add(int[] zahl)
{
   int sum = 0;
	
   for (int i = 0; i < zahl.length; i++)
      sum += zahl[i];

   return sum;
}

Diese Methode kann man dann aufrufen, man muss allerdings vorher einen entsprechenden Array bereitstellen:

public void test()
{
   int[] summanden = {3, 4, 5, 6, 7, 8};
   int summe = add(summanden);
}

In diesem Beispiel befindet sich die Methode add in der gleichen Klasse wie die Methode test. Würde sich add in einer anderen Klasse befinden, so müsste erst ein Objekt dieser Klasse angelegt werden und dann müsste die Methode als Methode des Objektes aufgerufen werden, also zum Beispiel so:

int summe = rechner.add(summanden);

Alternativ könnte man die add-Methode als statische Methode deklarieren und dann den Bezeichner der Klasse vor den Methodennamen setzen:

int summe = Rechner.add(summenden);

Verfahren 3
Variable Parameter

Es gibt ein noch besseres Verfahren als die beiden eben beschriebenen. Das folgende Beispiel zeigt eine Methodendefinition, die einen variable Anzahl von Argumenten des Typs int benutzt:

public int add(int… zahl)
{
   int sum = 0;
   for (int i=0; i zahl.length; i++)
      sum += zahl[i];
 
   return sum;
}

Man schreibt zuerst den Datentyp hin, hier also int, und dann kommen drei Punkte und ein Leerzeichen. Schließlich kommt der Name des Arrays. In der Tat wird dieser variable Parameter intern wie ein Array behandelt, was man in der for-Schleife gut erkennen kann.

Der Vorteil dieses Verfahrens: Beim Aufrufen der Methode add muss man nicht mehr unbedingt vorher einen Array mit den Zahlen erzeugen, sondern kann beliebig viele konkrete Werte als aktuelle Parameter verwenden. Hier zwei Beispiele, die das verdeutlichen sollen:

   int summe1 = add(1,2,3);
   int summe2 = add(1,2,3,4,5,6,7);

Das ist jetzt deutlich einfacher als das zweite Verfahren, bei dem man immer erst einen Array mit den Zahlen erzeugen musste.