Список параметров varargs, созданный во время выполнения - PullRequest
0 голосов
/ 03 января 2012
public static void method(Set<?>... sets){}

В зависимости от выполнения программы указанный выше метод вызывается с двумя наборами или с тремя наборами или более.(Не известно во время компиляции).

Есть ли способ построить список аргументов "на лету"? наборы имеют тип Набор <?> []

Следующее было не плодотворно:

Set<Set<Integer>> varargs = new HashSet<Set<Integer>>();

(методраспознает переменные просто как один набор -> нет решения)

Set<Integer>[] varargs = new HashSet<Integer>[2];

возвращает

"Cannot create generic array of HashSet<Integer>" 

Я хотел бы создать массив аргументов, в то время как размер массива и его содержимое заполняются во время выполнения.

Ответы [ 2 ]

3 голосов
/ 03 января 2012
 Set<Integer>[] varargs = new HashSet[2];
 varargs[0] = new HashSet<Integer>() ;
2 голосов
/ 03 января 2012

Я считаю, что массив Set должен быть определен так:

Set<Integer>[] varargs = new Set[2];
varargs[0] = new HashSet<Integer>();
varargs[1] = new HashSet<Integer>();
...