Можно ли опубликовать список в качестве параметра для функции с неограниченными параметрами (...) в Java?

Допустим, у меня есть сторонняя библиотека, которая предоставляет функцию, принимающую неограниченные параметры:

void foo(Bar ... bar);

Я не могу изменить эту библиотеку или создать новые функции для этой библиотеки, я могу использовать только то, что они предоставляют. Далее у меня есть список параметров для использования:

List<Bar> bars = new ArrayList<Bar>();
// list initialization by some complex algorithm.

Я хочу иметь возможность использовать этот список в качестве параметра для foo функция. Я знаю, что могу сделать что-то вроде этого:

for (Bar bar: bars)
    foo(bar);

Но мне нужно минимизировать количество звонков на foo насколько это возможно, поэтому я пытаюсь опубликовать целый список сразу. Это возможно с Java?

1 ответ

Так как это параметр переменного аргумента (или varargs), да; он взаимозаменяем с массивом. Вам просто нужно создать массив.

С помощью List#toArray(T[] arr) это просто:

foo(bar.toArray(new Bar[bar.size()]));
Другие вопросы по тегам