Запихнуть массив в vararg
От: Nortsx  
Дата: 14.05.12 16:32
Оценка:
Есть функция которая принимает последовательность вида Integer 1...Integer n , т е вызов этой функции выглядит как

func(Integer1, Integer2 , Integer3, Integer4) и т д.
Как я могу запихнуть туда массив в качестве параметров?
P.S Просьба не привязываться к интам, это просто как пример, на самом деле там экземпляры некоего класса.
Re: Запихнуть массив в vararg
От: Blazkowicz Россия  
Дата: 14.05.12 17:09
Оценка:
Здравствуйте, Nortsx, Вы писали:

N>Есть функция которая принимает последовательность вида Integer 1...Integer n , т е вызов этой функции выглядит как

N>func(Integer1, Integer2 , Integer3, Integer4) и т д.
N>Как я могу запихнуть туда массив в качестве параметров?
N>P.S Просьба не привязываться к интам, это просто как пример, на самом деле там экземпляры некоего класса.
Там, если типизация нормальная, то можно спокойно массив передавать
Integer[] args = ...
func(args)
в некоторых ситуациях бывает когда весь массив трактуется как один элемент vararg. Точно не помню какие условия.
Re: Запихнуть массив в vararg
От: rfq  
Дата: 14.05.12 17:15
Оценка:
Здравствуйте, Nortsx, Вы писали:

N>Есть функция которая принимает последовательность вида Integer 1...Integer n , т е вызов этой функции выглядит как


N>func(Integer1, Integer2 , Integer3, Integer4) и т д.

N>Как я могу запихнуть туда массив в качестве параметров?

Вы бы лучше написали, как выглядит сигнатура функции, а не вызов. Если так:

void func(Integer... args)

то фактически это

void func(Integer[] args)

и подать туда массив в качестве параметров тривиально:

Integer[] args;
func(args);

Разница между (Integer... args) и (Integer[] args) только в том, что в первом случае можно (но не обязательно) вызывать функцию также и с переменным числом параметров. В этом случае компилятор сам добавит код создания массива и инциализации его из параметров.
Re[2]: Запихнуть массив в vararg
От: Nortsx  
Дата: 14.05.12 19:02
Оценка:
Здравствуйте, rfq, Вы писали:

rfq>Здравствуйте, Nortsx, Вы писали:


N>>Есть функция которая принимает последовательность вида Integer 1...Integer n , т е вызов этой функции выглядит как


N>>func(Integer1, Integer2 , Integer3, Integer4) и т д.

N>>Как я могу запихнуть туда массив в качестве параметров?

rfq>Вы бы лучше написали, как выглядит сигнатура функции, а не вызов. Если так:


rfq>void func(Integer... args)


rfq>то фактически это


rfq>void func(Integer[] args)


rfq>и подать туда массив в качестве параметров тривиально:


rfq>Integer[] args;

rfq>func(args);

rfq>Разница между (Integer... args) и (Integer[] args) только в том, что в первом случае можно (но не обязательно) вызывать функцию также и с переменным числом параметров. В этом случае компилятор сам добавит код создания массива и инциализации его из параметров.


Я к сожалению плохо владею даром внятно выражать свои мысли.
Сигнатура функции выглядит именно как Integer... args. спасибо всем за помощь, оно работает!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.