Currently, I'm learning java generics. I have question related to Collections.addAll()
public static <T> boolean addAll(Collection<? super T> c, T... elements) {
  boolean result = false;
  for (T element : elements)
    result |= c.add(element);
  return result;
}
Why do we use lower bounded wildcard? can't we remove it?
public static <T> boolean addAll(Collection<T> c, T... elements) {
  boolean result = false;
  for (T element : elements)
    result |= c.add(element);
  return result;
}
What is the affect of replacing Collection<? super T> with Collection<T> in this case?
 
     
    