Wenn Sie in C # möchten, dass eine Methode eine unbestimmte Anzahl von Parametern enthält, können Sie den letzten Parameter in der Methodensignatur zu einem params
machen, sodass der Methodenparameter wie ein Array aussieht, aber jeder übergibt, der die Methode verwendet so viele Parameter dieses Typs, wie der Aufrufer möchte.
Ich bin ziemlich sicher, dass Java unterstützt ähnliches Verhalten, aber ich kann nicht herausfinden, wie es geht.
In Java heißt es varargs , und die Syntax sieht aus wie ein regulärer Parameter, jedoch mit einem Auslassungszeichen ("...") nach dem Typ:
public void foo(Object... bar) {
for (Object baz : bar) {
System.out.println(baz.toString());
}
}
Der vararg-Parameter muss always der letzte Parameter in der Methodensignatur sein und wird aufgerufen, als ob Sie ein Array erhalten hätten dieser Art (zB Object[]
in diesem Fall).
Dies erledigt den Trick in Java
public void foo(String parameter, Object... arguments);
Sie müssen drei Punkte hinzufügen ...
und der Parameter varagr
müssen der letzte in der Signatur der Methode sein.
Wie in vorherigen Antworten geschrieben, ist es varargs
und wird mit Ellipsis
deklariert (...)
Außerdem können Sie entweder die Werttypen und/oder Referenztypen oder beide gemischt übergeben (google Autoboxing). Zusätzlich können Sie den method-Parameter als Array verwenden, wie unten mit der printArgsAlternate
-Methode gezeigt.
public class VarargsDemo {
public static void main(String[] args) {
printArgs(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
printArgsAlternate(3, true, "Hello!", new Boolean(true), new Double(25.3), 'a', new Character('X'));
}
private static void printArgs(Object... arguments) {
System.out.print("Arguments: ");
for(Object o : arguments)
System.out.print(o + " ");
System.out.println();
}
private static void printArgsAlternate(Object... arguments) {
System.out.print("Arguments: ");
for(int i = 0; i < arguments.length; i++)
System.out.print(arguments[i] + " ");
System.out.println();
}
}
Arguments: 3 true Hello! true 25.3 a X
Arguments: 3 true Hello! true 25.3 a X