Variable Parameteranzahl in Java5 mit “…”
Samstag, 08. August 2009Wer von der PHP-Ecke kommt kennt die manchmal sehr nützliche Methode “func_get_args()”, bei der man alle Methodenparameter in einem Array geliefert bekommt. Dies ist an denjenigen Stellen sehr praktisch, bei denen die Parameteranzahl nicht immer “fix” ist. Man kann das zwar auch durch ein Array lösen, jedoch ist die Syntax ohne Array weniger Overhead und somit einfacher zu lesen.
Zu meinem Erstaunen hab ich durch die Benutzung von EasyMock herausgefunden, dass es auch in Java 5 die Möglichkeit gibt die Parameteranzahl variabel zu halten. Dazu wird einfach das Token “…” hinter den Datentyp geschrieben, und Java wandelt es dann intern in eine Array um. Innerhalb der Methoden kann der Parameter dann als ganz normales Array behandelt werden. Folgendes Beispiel soll das ganze kurz demonstrieren.
public class MyTestClass{ public static String concat(String... tokens){ StringBuffer sb = new StringBuffer(); for(String token : tokens){ sb.append(token); } return sb.toString(); } }
Durch die “…” kann die Methode nun wie folgt aufgerufen werden.
String result = MyTestClass.concat("foo", "bar", "blub"); System.out.println(result); // Ausgabe: foobarblub
Wie zu sehen ist kann man beliebig viele Strings in der Parameterliste angeben. In meinen Augen sehr schön zu lesen und findet mit Sicherheit an der ein oder anderen Stelle Verwendung
Einen guten detailierteren Blog-Beitrag zur variablen Parameteranzahl in Java 5 Thema hab ich noch hier gefunden.