Как сказали devA и VVV, это называется varargs.Фактически следующие две строки кода эквивалентны:
public void makeLemonade(String[] args) {
и
public void makeLemonade(String... args) {
код внутри метода будет одинаковым, но при его вызове они будут вызваныпо-другому.Первый должен называться следующим образом:
makeLemonade(new String[]{"lemon1", "lemon2", "lemon3"});
, тогда как сигнатура метода второго может иметь от 0 до (предполагаемого) бесконечного числа аргументов, но все они должны быть аргументами String.Все следующие вызовы будут работать:
makeLemonade("lemon1");
makeLemonade("lemon4", "lemon7", "lemon11", "lemon12");
makeLemonade();
// ... etc ...
Тонкое различие между ними заключается в том, что вы можете легально вызвать makeLemonade (), если используете varargs.