Это «переменные аргументы» или varargs (для краткости).
В основном это позволяет передавать неопределенное количество строк, поэтому сигнатура метода
public void printStuff(String...messages)
Эффективнообрабатывать следующие вызовы
printStuff("hi");
printStuff("hi", "bye");
printStuff("Hello", "How are you?", "I'm doing fine.", "See you later");
Вы можете эффективно рассматривать это как тип автобокса.Аргумент printStuff
можно рассматривать как массив, поэтому концептуально printStuff(String...messages)
обрабатывается как printStuff(String[] messages)
.С учетом вышеприведенных вызовов, действующих как
printStuff(new String[] {"hi"});
printStuff(new String[] {"hi", "bye"});
printStuff(new String[] {"Hello", "How are you?", "I'm doing fine.", "See you later"});
Для внутреннего доступа к сообщениям вы используете типичные List
обработчики примитивов.Что-то вроде
...
if (messages != null) {
for (String message : messages) {
System.out.println(message);
}
}
...
Отсутствие необходимости создавать массивы - это немного синтаксического сахара, добавленного в Java с появлением автоматического бокса.