Super Extends Genéricos - Tensho97/Aprende-a-Aprender GitHub Wiki

Es muy habitual con los genéricos ver esto: <?> acompañado de "extends" o "super". Explicaremos lo que son a través de un ejemplo: Supongamos que tenemos una lista de números enteros:

List<Integer> miLista = new List<>( );

y pensamos , "bueno, Integer es una subclase de Numbre, así que podemos hacer esto" :

List<Number> miLista = new List<Integer>( );

No compila, porque solo se le pueden meter objetos de tippo Numbre, no objetos de clase Integer, Double, Short , Long. Sólo de la clase Number. Ahora bien, si escribimos esto:

List<? extends Number> miLista = new List<Integer>( );

Estamos indicando que la lista aceptará objetos de las clases que extiendan de "Number". En este caso "Integer".

List<? super Integer> 

En este caso le estamos indicando que la lista admitirá cualquier objeto que pertenezca a una clase superior de "integer".

¿ Y qué ocurre si hacemos esto?

List <?>

En esto caso estamos indicando que la lista aceptará cualquier tipo de objeto.



Autor : Julián

⚠️ **GitHub.com Fallback** ⚠️