W dokumentach App Engine , do czego służy ellipsis ( JID...
) w sygnaturze tej metody?
public MessageBuilder withRecipientJids(JID... recipientJids)
Jaka jest funkcja tych trzech kropek?
W dokumentach App Engine , do czego służy ellipsis ( JID...
) w sygnaturze tej metody?
public MessageBuilder withRecipientJids(JID... recipientJids)
Jaka jest funkcja tych trzech kropek?
…
, Unicode U + 2026. NetBeans 8 w Javie 8 zgłasza „nielegalny charakter”. Tak Java varargs wymagają potrójne kropkę (kropka),...
.Odpowiedzi:
To są varargs Java. Pozwalają przekazać dowolną liczbę obiektów określonego typu (w tym przypadku są one typu JID).
W twoim przykładzie poprawne byłyby następujące wywołania funkcji:
Zobacz więcej tutaj: http://java.sun.com/j2se/1.5.0/docs/guide/language/varargs.html
źródło
Sposób użycia elipsy lub varargsa w metodzie jest taki, jakby to była tablica:
Metodę tę można wywołać w następujący sposób:
Wewnątrz
PrintWithEllipsis
typsetOfStrings
jest tablicą ciągu znaków. Abyś mógł zapisać kompilatorowi trochę pracy i przekazać tablicę:W przypadku metod varargs parametr sekwencji jest traktowany jako tablica tego samego typu. Więc jeśli dwa podpisy różnią się tylko tym, że jeden deklaruje sekwencję, a drugi tablicę, jak w tym przykładzie:
wtedy pojawia się błąd czasu kompilacji.
Źródło: specyfikacja języka programowania Java , w której termin techniczny jest
variable arity parameter
raczej terminem wspólnymvarargs
.źródło
Notacja z trzema kropkami (...) jest zapożyczona z matematyki i oznacza „... i tak dalej”.
Jeśli chodzi o użycie w Javie, oznacza to, co oznacza
varargs
, że do wywołania metody można dodać dowolną liczbę argumentów. Jedynymi ograniczeniami są to, żevarargs
musi znajdować się na końcu podpisu metody i może być tylko jedna na metodę.źródło
Są
varargs
one używane do tworzenia metody, która odbiera dowolną liczbę argumentów.Na przykład metoda PrintStream.printf używa go, ponieważ nie wiesz, ile argumentów użyjesz.
Można je wykorzystać tylko jako ostateczną pozycję argumentów.
varargs
został dodany do Java 1.5źródło
Oznacza to, że metoda akceptuje zmienną liczbę argumentów („varargs”) typu
JID
. W ramach metodyrecipientJids
przedstawiono.Jest to przydatne w przypadkach, gdy masz metodę, która może opcjonalnie obsłużyć więcej niż jeden argument w naturalny sposób, i pozwala na pisanie wywołań, które mogą przekazać jeden, dwa lub trzy parametry do tej samej metody, bez brzydoty tworzenia tablica w locie.
Umożliwia także idiomy, takie jak
sprintf
z C; patrzString.format()
na przykład.źródło