<?的必要性?super T>在Collections.copy中输入

Pra*_*nna 5 java generics

Collections.copy方法签名是,

public static <T> void copy(List<? super T> dest, List<? extends T> src)
Run Code Online (Sandbox Code Playgroud)

只是想知道dest类型是否必须<? super T>而不仅仅是<T>

public static void main(String[] args)
{
  simpleCopy(new ArrayList<Number>(), new ArrayList<Number>());
  simpleCopy(new ArrayList<Number>(), new ArrayList<Integer>());
}

public static <T> void simpleCopy(Collection<T> dest, Collection<?  extends T> src)
{
   for (T element : src)
     dest.add(element);
}
Run Code Online (Sandbox Code Playgroud)