Подтвердить что ты не робот

Метод Java с неограниченными аргументами

Структура spring использует методы, в которых вы можете передать столько аргументов, сколько захотите.

Я хотел бы написать функцию, которая также может принимать неограниченное количество данных. Как эта функция называется так, чтобы я мог ее прочитать. Или как я могу определить его?

Большое спасибо.

4b9b3361

Ответ 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);