Java: как я могу создать функцию, которая поддерживает любое количество параметров? - PullRequest
24 голосов
/ 18 ноября 2010

возможно ли создать функцию в java, которая поддерживает любое количество параметров, а затем иметь возможность перебирать каждый из параметров, предоставляемых функции?

спасибо

kfir

Ответы [ 3 ]

40 голосов
/ 18 ноября 2010

Java Varargs .

Примерно так ...

public void func(String ... strings) {
    for (String s : strings)
         System.out.println(s);
}

Обратите внимание, что если вы хотите требовать, чтобы некоторое минимальное количество аргументов передавалосьФункция, хотя все еще допускает переменные аргументы, вы должны сделать что-то вроде этого.Например, если у вас была функция, которой требовалась хотя бы одна строка, а затем список аргументов переменной длины:

public void func2(String s1, String ... strings) {

}
6 голосов
/ 18 ноября 2010

Как уже отмечалось, вы можете использовать Varargs:

void myMethod(Object... args) 

Это фактически эквивалентно:

void myMethod(Object[] args) 

Фактически, компилятор преобразует первую форму во вторую - нет разницы в байтовом коде. Все аргументы должны быть одного типа, поэтому, если вы хотите использовать аргументы разных типов, вам нужно использовать тип Object и выполнить необходимое приведение.

5 голосов
/ 18 ноября 2010

Да, используя varargs .

...