Wofür steht in den App Engine-Dokumenten das Auslassungszeichen ( JID...
) in dieser Methodensignatur?
public MessageBuilder withRecipientJids(JID... recipientJids)
Was ist die Funktion dieser drei Punkte?
Wofür steht in den App Engine-Dokumenten das Auslassungszeichen ( JID...
) in dieser Methodensignatur?
public MessageBuilder withRecipientJids(JID... recipientJids)
Was ist die Funktion dieser drei Punkte?
Antworten:
Das sind Java-Varargs. Mit ihnen können Sie eine beliebige Anzahl von Objekten eines bestimmten Typs übergeben (in diesem Fall sind sie vom Typ JID).
In Ihrem Beispiel wären die folgenden Funktionsaufrufe gültig:
MessageBuilder msgBuilder; //There should probably be a call to a constructor here ;)
MessageBuilder msgBuilder2;
msgBuilder.withRecipientJids(jid1, jid2);
msgBuilder2.withRecipientJids(jid1, jid2, jid78_a, someOtherJid);
Weitere Informationen finden Sie hier: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Die Art und Weise , die zu verwenden Ellipsen oder varargs innerhalb der Methode ist , als ob es ein Array war:
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
Diese Methode kann wie folgt aufgerufen werden:
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
Im Inneren PrintWithEllipsis
ist der Typ von setOfStrings
ein Array von String. Sie können dem Compiler also etwas Arbeit ersparen und ein Array übergeben:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
Bei varargs- Methoden wird ein Sequenzparameter als Array desselben Typs behandelt. Wenn sich also zwei Signaturen nur darin unterscheiden, dass eine eine Sequenz und die andere ein Array deklariert, wie in diesem Beispiel:
void process(String[] s){}
void process(String...s){}
dann tritt ein Kompilierungsfehler auf.
Quelle: Die Java Programming Language- Spezifikation, bei der der Fachbegriff variable arity parameter
eher der allgemeine Begriff ist varargs
.
Die Drei-Punkt-Notation (...) stammt tatsächlich aus der Mathematik und bedeutet "... und so weiter".
Die Verwendung in Java steht für varargs
, was bedeutet, dass dem Methodenaufruf eine beliebige Anzahl von Argumenten hinzugefügt werden kann. Die einzigen Einschränkungen bestehen darin, dass das varargs
am Ende der Methodensignatur stehen muss und es nur eine pro Methode geben kann.
Diese werden varargs
verwendet, um eine Methode zu erstellen, die eine beliebige Anzahl von Argumenten empfängt.
Zum Beispiel wird es von der PrintStream.printf- Methode verwendet, da Sie nicht wissen, wie viele Argumente Sie verwenden würden.
Sie können nur als endgültige Position der Argumente verwendet werden.
varargs
wurde auf Java 1.5 hinzugefügt
Dies bedeutet, dass die Methode eine variable Anzahl von Argumenten ("varargs") vom Typ akzeptiert JID
. Innerhalb der MethoderecipientJids
wird vorgestellt.
Dies ist praktisch für Fälle, in denen Sie eine Methode haben, die optional mehr als ein Argument auf natürliche Weise verarbeiten kann, und die es Ihnen ermöglicht, Aufrufe zu schreiben, die einen, zwei oder drei Parameter an dieselbe Methode übergeben können, ohne die Hässlichkeit des Erstellens zu haben ein Array im laufenden Betrieb.
Es ermöglicht auch Redewendungen wie sprintf
von C; siehe String.format()
zum Beispiel.
…
Unicode U + 2026 ausprobiert . NetBeans 8 in Java 8 meldet "unzulässiges Zeichen". Java-Varargs erfordern also den dreifachen FULL STOP (Punkt)...
.