Антескрипт: Я знаю, что есть предыдущий вопрос SO, название которого звучит так, как будто оно относится к одному и тому же вопросу. Это не так.Инициализация Vararg с параметрами из массива (Java)
Во всяком случае, этот вопрос немного странный - есть много лучших способов решить проблемы здесь, но мне любопытно, как я могу решить свою конкретную дилемму.
Предположим, у меня есть метод, который использует varargs, чтобы принять произвольное количество элементов, возможно, типа Integer
. Если у меня есть массив целых чисел произвольной длины, есть ли способ вызвать мой метод с разделенным запятыми списком параметров, состоящим из каждого элемента указанного массива?
Вот краткий, надуманный пример:
Integer[] paramList = new Integer {1, 2, 3};
varMethod(paramList[0], paramList[1], paramList[2]);
// varMethod({{for (param : paramList) {param;}}});
public void varMethod(Integer...values) {
for (Integer value : values) {
foo(value);
}
}
Это закомментированная линия намекает на то, что я хочу сделать. Поскольку целое число является произвольной длиной, вызов varMethod
с каждым явно запрошенным элементом (строка 2) не будет работать. Мне интересно, есть ли способ динамически генерировать разделяемый запятыми список параметров из элементов массива.
Опять же, я понимаю, что в примере, подобном этому, есть более эффективные способы решения всей проблемы, но, пожалуйста, имейте в виду, что я упростил код, так что он имеет отношение только к конкретной проблеме, которую мы обсуждаем здесь , Любые обходные пути, которые касаются моего опубликованного кода, не будут обобщаться на проблему, над которой я действительно работаю, это привело меня к тому, чтобы я сформулировал этот вопрос в первую очередь.
вы избили меня .... – confucius
Полностью право; Я не знал, что varargs - всего лишь частный случай массивов. Благодаря! – Walker