Wozu dienen die Auslassungspunkte (…) in dieser Methodensignatur?

Lesezeit: 3 Minuten

Wozu dienen die Auslassungspunkte in dieser Methodensignatur
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?

  • Ü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


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

Wozu dienen die Auslassungspunkte in dieser Methodensignatur
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 PrintWithEllipsisdie 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.

Wozu dienen die Auslassungspunkte in dieser Methodensignatur
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.

922890cookie-checkWozu dienen die Auslassungspunkte (…) in dieser Methodensignatur?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy