Метод Java с неограниченными аргументами
Структура spring использует методы, в которых вы можете передать столько аргументов, сколько захотите.
Я хотел бы написать функцию, которая также может принимать неограниченное количество данных. Как эта функция называется так, чтобы я мог ее прочитать. Или как я могу определить его?
Большое спасибо.
Ответы
Ответ 1
Он называется varargs.
Он позволяет методу принимать любое количество аргументов. Они доступны в виде массива в методе:
public void foo(String... args) {
for (String arg : args) {
// do smth with arg.
}
}
Это синтаксический сахар. Компилятор скрывает создание массива, поэтому вместо
bar.foo(new String[] {"1", "2", "3"});
вы пишете
bar.foo("1", "2", "3");
Ответ 2
Чтобы добавить ответ Божо, у вас также могут быть другие аргументы в вашем методе перед varargs:
// foo(13, "foo", "bar", "baz");
// will print:
// 13 - |foo||bar||baz|
public void foo(int a, String... b) {
System.out.println(a + " - ");
for (String c : b) {
System.out.print("|" + c + "|");
}
}
Однако после этого нельзя иметь аргументы другого типа. Они не работают:
public void bar(String... b, int b);
public void foo(int a, String... b, int b);