Variable Parameterlisten in Java
Einmal mehr habe ich diese Woche eine schmerzhafte Lektion in Java programmieren erhalten. Während ich anfangs Semester noch das Gefühl hatte alle Funktionen in Java zu kennen, entdecke ich in letzter Zeit immer wieder neues. So habe ich erst diese Woche mitbekommen das Java variable Parameterlisten, wie sie auch in Ruby oder C# möglich sind, kennt. Das heisst das als letztes Argument der Parmeterliste "type... name" angegeben werden kann. Das sieht dann so aus:
int summe(int ...summanden) {
int summe = 0;
for(int i: summanden)
summe = summe + i;
return summe;
}
Der Aufruf der Methode kann dann wie folgt aussehen (mit beliebig vielen int in der Aufrufsliste):
System.out.println(summe(1,2,3,4,5));
Meiner Meinung nach "Syntactical Sugar" denn es nicht wirklich braucht, da es dafür relativ wenig sinnvolle Anwendungen gibt und der "work-around" mit einem Array nicht viel komplizierter ist.
Wer noch mehr interessantes, gebloggtes über Java sucht wird auf javablog.ch fündig. Dieser Blogtipp kommt von bloggerli und die Quelle des Beispielcodes ist ein Artikel im Java Magazin.
comments
In dem Beispiel bringts in der Tat nicht allzu viel.
Mal überlegen ob sich vielleicht mit
generic(Object ...objs) { /* ... */ }
doch etwas schlaues anstellen lässt.
Hmm, wobei das recht schnell in einer instanceof-Orgie ausarten könnte.
Trotzdem: Nice to know!
Vielen Dank für die nette Erwähnung :) Ach ja: Für die variable Parameterliste habe ich bis jetzt auch noch keine sinnvolle Anwendung gefunden ;)
Eine klever Anwendung für variable Parameterlisten ist also nach wie vor gesucht. Mir ist auch immer noch nichts wirklich praktisches eingefallen.
@Heiko: Bitte, bitte!
Ich könnte mir vorstellen, das ganze für die initialisierung von Collections zu nutzen.. allemal besser als 10 mal eine .add Methode oder so aufzurufen. Andererseits wird man Collections wohl nicht oft auf diese Art verwenden..
Sinvolle Anwendung: Formatiertes printf wie in c verwendet
printf(String format,...)
Sinnvolle Anwendung: Übergabe von Variablennamen, um dann per Name auf die Variablen zuzugreifen. Dies ist zB über Reflections zu realisieren. Vorstellung einer Anwendung ist zum Beispiel die Realisierung des all_different Constraints für CSPs.
"Während ich anfangs Semester noch das Gefühl hatte alle Funktionen in Java zu kennen, entdecke ich in letzter Zeit immer wieder neues."
Ach nö, was bildest du dir eigentlich ein?!
add a comment
The Trackback URL to this comment is:
http://leo.freeflux.net/blog/plugin=trackback(1259).xml
This blog is gravatar enabled.
Your email adress will never be published.
Comment spam will be deleted!






Jep, ziemlich unnötig.. da wären mir beispielsweise Default-Parameter lieber gewesen und bestimmt praktischer.