Способ использования многоточия или varargs внутри метода, как если бы это был массив:
public void PrintWithEllipsis(String...setOfStrings) {
for (String s : setOfStrings)
System.out.println(s);
}
Этот метод может быть вызван следующим образом:
obj.PrintWithEllipsis(); // prints nothing
obj.PrintWithEllipsis("first"); // prints "first"
obj.PrintWithEllipsis("first", "second"); // prints "first\nsecond"
Внутри PrintWithEllipsis
тип setOfStrings
является массивом String.
Таким образом, вы можете сэкономить компилятору некоторую работу и передать массив:
String[] argsVar = {"first", "second"};
obj.PrintWithEllipsis(argsVar);
Для методов varargs параметр последовательности обрабатывается как массив того же типа. Так что, если две подписи отличаются только тем, что один объявляет последовательность, а другой - массив, как в этом примере:
void process(String[] s){}
void process(String...s){}
тогда возникает ошибка времени компиляции.
Источник: Спецификация языка программирования Java , где техническим термином является variable arity parameter
, а не общий термин varargs
.