Ist es möglich, eine Methode zu deklarieren, die eine variable Anzahl von Parametern zulässt?
Welche Symbolik wird in der Definition verwendet, die angibt, dass die Methode eine variable Anzahl von Parametern zulassen soll?
Antwort: varargs
Ist es möglich, eine Methode zu deklarieren, die eine variable Anzahl von Parametern zulässt?
Welche Symbolik wird in der Definition verwendet, die angibt, dass die Methode eine variable Anzahl von Parametern zulassen soll?
Antwort: varargs
Antworten:
Das ist richtig. Weitere Informationen hierzu finden Sie im Oracle-Handbuch zu varargs .
Hier ist ein Beispiel:
void foo(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
was als bezeichnet 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.
Object...
.
Object... args
wegen mit Primitiven arbeiten Autoboxing .
varargs.length
Variable number of arguments
Es ist möglich, eine variable Anzahl von Argumenten an eine Methode zu übergeben. Es gibt jedoch einige Einschränkungen:
Um diese Einschränkungen zu verstehen, betrachten Sie die Methode im folgenden Codeausschnitt, mit der die größte Ganzzahl in einer Liste von Ganzzahlen zurückgegeben wird:
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-Programmierstudienhandbuch 2012
Für verschiedene Arten von Argumenten gibt es 3 Punkte :
public void foo(Object... x) {
String myVar1 = x.length > 0 ? (String)x[0] : "Hello";
int myVar2 = x.length > 1 ? Integer.parseInt((String) x[1]) : 888;
}
Dann nenne es
foo("Hii");
foo("Hii", 146);
Verwenden Sie aus Sicherheitsgründen Folgendes:
if (!(x[0] instanceof String)) { throw new IllegalArgumentException("..."); }
Der Hauptnachteil dieses Ansatzes besteht darin, dass bei statischen Parametern unterschiedlicher Typen die statische Typprüfung verloren geht. Bitte sehen Sie weitere Variationen .
Ja ... seit Java 5: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Ja, Java erlaubt vargs
Methodenparameter.
public class Varargs
{
public int add(int... numbers)
{
int result = 1;
for(int number: numbers)
{
result= result+number;
} return result;
}
}