Me está costando mucho intentar resolver esto. Supongo que tengo el siguiente código:Covarianza de Java
class Animal { }
class Mammal extends Animal { }
class Giraffe extends Mammal { }
...
public static List<? extends Mammal> getMammals() { return ...; }
...
public static void main(String[] args) {
List<Mammal> mammals = getMammals(); // compilation error
}
¿Por qué la asignación da como resultado un error de compilación? El error es algo así como:
Type mismatch: cannot convert from List<capture#4-of ? extends Mammal> to List<Mammal>
Según mi entendimiento de la covarianza, el método devuelve un getMammals()
list
que siempre contendrá objetos Mammal
lo que debe ser asignable. ¿Qué me estoy perdiendo?
+ 1, pero ¿podría explicar qué significa "Lista o lista pero no lista"? : p –
Reformateado para eliminar la confusa 'Lista o Lista pero no Lista' :-) –
Los genéricos se estaban tratando como html, escapé de –