me di cuenta de la specificaition para Collections.sort:¿Por qué SomeClass <? super T> no es equivalente a SomeClass <T> en tipos genéricos de Java?
public static <T> void sort(List<T> list, Comparator<? super T> c)
¿Por qué es el "? super
" necesario en este caso? Si ClassB
se extiende ClassA
, entonces ¿no tendríamos una garantía de que un Comparator<ClassA>
sería capaz de comparar dos objetos ClassB
de todos modos, sin la parte "? super
"?
En otras palabras, dado este código:
List<ClassB> list = . . . ;
Comparator<ClassA> comp = . . . ;
Collections.sort(list, comp);
por qué no es el compilador lo suficientemente inteligente para saber que esto está bien, incluso sin especificar "? super
" para la declaración de Collections.sort()?
Gracias, esta es una presentación útil. Creo que la raíz de mi problema es la primera diapositiva real: List no es una subclase de List