Я не понимаю, почему следующий код работает:Должен ли тип T в addToCollection (T [] a, Collection <T> c) быть тем же?
import java.util.ArrayList;
import java.util.Collection;
public class Main {
public static void main(String[] args) {
Integer[] arr=new Integer[]{1,2,3};
ArrayList<Object> al=new ArrayList<>();
addToCollection(arr, al);
}
static <T> void addToCollection(T[] a, Collection<T> c)
{
for(T o:a)
c.add(o);
}
}
это не должно быть:
...
static <T> void addToCollection(T[] a, Collection<? super T> c)
...?
Не должен ли быть тип T во время разговора?
Как сказано в комментариях, мой вопрос: «Какой тип выведен для T». Поскольку код работает, я предполагаю, что высший тип в иерархии выведен.
Как и что? – shmosel
Если у вас есть массив 'Bicycle', разве вы не сможете добавить его в коллекцию' Vehicle'? – chrylis
Он спрашивает, почему ему разрешено передавать 'ArrayList