In dem App Engine-Dokumentationwas ist die Ellipse (JID...
) für in dieser Methodensignatur?
public MessageBuilder withRecipientJids(JID... recipientJids)
Welche Funktion haben diese drei Punkte?
nett
In dem App Engine-Dokumentationwas ist die Ellipse (JID...
) für in dieser Methodensignatur?
public MessageBuilder withRecipientJids(JID... recipientJids)
Welche Funktion haben diese drei Punkte?
Das sind Java-Varargs. Sie lassen Sie beliebig viele Objekte eines bestimmten Typs (in diesem Fall vom Typ JID) übergeben.
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);
Sehen Sie hier mehr:
http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
Beachten Sie, dass die Argumente auch als Array von JID übergeben werden können (das macht varargs abwärtskompatibel).
– mjn
13. März 2010 um 19:39 Uhr
Beachten Sie auch, dass das Übergeben von 0 Varargs (nichts) zulässig ist.
– Hawkeye Parker
28. Juni 2012 um 0:00 Uhr
Zu guter Letzt muss vararg der letzte Parameter der Methode sein. Sie können also nicht zwei vararg-Parameter in derselben Methode haben. Vielleicht finden Sie diese Methode interessant docs.oracle.com/javase/7/docs/api/java/util/…
– Benutzer4118249
17. August 2015 um 19:14 Uhr
Lucio
Die Art und Weise zu verwenden Ellipse oder Varargs Innerhalb der Methode ist es so, als wäre es ein Array:
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"
Innen PrintWithEllipsis
die Art von setOfStrings
ist ein Array von String. So könnte man dem Compiler etwas Arbeit ersparen und ein Array übergeben:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
Zum Varargs -Methoden wird ein Sequenzparameter als Array desselben Typs behandelt. Wenn sich also zwei Signaturen nur darin unterscheiden, dass die 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 Programmiersprache Java Spezifikation, wo der Fachbegriff steht variable arity parameter
eher als der gängige Begriff varargs
.
James Goodwin
Die Drei-Punkte-Notation (…) ist eigentlich aus der Mathematik entlehnt und bedeutet “…und so weiter”.
Was seine Verwendung in Java betrifft, steht es für varargs
, was bedeutet, dass dem Methodenaufruf beliebig viele Argumente hinzugefügt werden können. Die einzigen Einschränkungen sind, dass die varargs
muss am Ende der Methodensignatur stehen und es kann nur eine pro Methode geben.
Jene sind varargs
Sie werden verwendet, um eine Methode zu erstellen, die eine beliebige Anzahl von Argumenten erhält.
Zum Beispiel PrintStream.printf -Methode verwendet es, da Sie nicht wissen, wie viele would-Argumente Sie verwenden werden.
Sie können nur als Schlussposition der Argumente verwendet werden.
varargs
wurde hinzugefügt Java 1.5
Das bedeutet, dass die Methode a akzeptiert variable Anzahl von Argumenten (“varargs”) vom Typ JID
. Innerhalb der Methode, recipientJids
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 es Ihnen ermöglicht, Aufrufe zu schreiben, die ein, zwei oder drei Parameter an dieselbe Methode übergeben können, ohne die Hässlichkeit des Erstellens zu haben ein Array on the fly.
Es ermöglicht auch Redewendungen wie z sprintf
von C; sehen String.format()
zum Beispiel.
Übrigens habe ich das HORIZONTAL ELLIPSIS-Zeichen ausprobiert,
…
, Unicode U+2026. NetBeans 8 in Java 8 meldet “illegales Zeichen”. Java-Varargs erfordern also den dreifachen FULL STOP (Punkt),...
.– Basilikum Bourque
25. Januar 2015 um 1:54 Uhr