Foros del Web » Programación para mayores de 30 ;) » Java »

Generics

Estas en el tema de Generics en el foro de Java en Foros del Web. Hola, Tengo un método como el siguiente: Código: public static void leerCajas(List<Animal<? extends Animal>> animales) { ... } Mediante el siguiente código pruebo mi método: ...
  #1 (permalink)  
Antiguo 18/05/2012, 09:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 309
Antigüedad: 19 años, 2 meses
Puntos: 1
Generics

Hola,

Tengo un método como el siguiente:
Código:
public static void leerCajas(List<Animal<? extends Animal>> animales) { ... }
Mediante el siguiente código pruebo mi método:
Código:
List<Animal<Animal>> animales = new ArrayList<Animal<Animal>>();
List<Animal<Dog>> animales2 = new ArrayList<Animal<Dog>>();
leerCajas(animales); //compile error
leerCajas(animales2); //compile error
Y sorprendentemente y contra toda mi lógica, me muestra un error como el siguiente:

Te methos leerCajas(List<Animal<? extends Animal>>) is not applicable for the arguments (List<Animal<Animal>>)

Para evitar este error en tiempo de compilación he modificado el método leerCajas de la siguiente forma:

Código:
public static void leerCajas(List<? extends Animal<? extends Animal>> animales) { ... }
Y de esta forma va perfecto.

Pero a ciencia cierta, no entiendo por qué debo hacerlo de esa forma, me parece que el método en su forma original está perfecto y que no hay nada malo en la forma como estoy pasando los valores al método.

Sin embargo, parece que no termino de entender esto del generics.

Me podrían ayudar a entender por qué mi código original da error?

Muchas gracias desde ya.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:45.