what's the difference between the following two method definitions? Which one is preferred if they are the same?
public static <T extends Comparable<? super T>>
void sort1(List<T> list) {}
public static <T>
void sort2(List<? extends Comparable<? super T>> list) {}
And if the methods have more then one parameter that uses the type parameter, what's the difference then?
public static <T extends Comparable<? super T>>
void add1(List<T> list, T element) {}
public static <T>
void add2(List<? extends Comparable<? super T>> list, T element) {}