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

Как передать ArrayList методу, ожидающему vararg (Object...)?

Предположим, что существует метод со следующей сигнатурой:

public static void foo(String arg1, String args2, Object... moreArgs);

При запуске...

ClassName.foo("something", "something", "first", "second", "third");

... Я получу moreArgs[0] == "first", moreArgs[1] == "second" и moreArgs[2] == "third".

Но предположим, что у меня есть параметры, хранящиеся в ArrayList<String>, называемом arrayList, который содержит "первый", "второй" и "третий".

Я хочу вызвать foo, чтобы moreArgs[0] == "first", moreArgs[1] == "second" и moreArgs[2] == "third" использовал arrayList в качестве параметра.

Моя наивная попытка была...

ClassName.foo("something", "something", arrayList);

... но это даст мне moreArgs[0] == arrayList, чего я не хотел.

Каков правильный способ передать arrayList методу foo выше, чтобы moreArgs[0] == "first", moreArgs[1] == "second" и moreArgs[2] == "third"?

Обратите внимание, что количество аргументов в arrayList в этом конкретном случае бывает три, но решение, которое я ищу, должно быть очевидно общим и работать для любого количества аргументов в arrayList.

4b9b3361

Ответ 1

Преобразуйте ArrayList в массив объектов типа.

ClassName.foo("something", "something", arrayList.toArray());

Ответ 2

Вы передаете это, как вы ожидаете. Однако есть только одно, и это ссылка на ArrayList.

Затем вы должны перенести свой материал из списка массивов.