Si usted significó que la clase A implementa IA, en lugar de IB, a continuación, el código debe estar muy bien diciendo
for (A item : list) {
// handle item as if it is an IA
}
como todos Como son, por definición IAs.
Mientras tanto, no hay ningún comodín para <? implements C>
. Hay <? extends C>
, y C
puede ser una interfaz o una clase; sin embargo, esto no es necesario para lo que parece que estás tratando de hacer.
Si desea expresamente que decir for (IA item : list)
porque no estás garantizando que los elementos de esa lista son A
s, pero está garantizando que son IA
s, entonces yo creo que hay un pequeño problema (no puedo decir con seguro, ya que no dijiste dónde se encuentra este código de procesamiento de lista). A List<A>
es no a List<IA>
por definición; si está compilando un List<A>
y luego pasándolo a un método que espera un List<IA>
, obtendrá un error de tiempo de compilación. Sin embargo, puede crear un List<IA>
y completarlo con A
s. La razón de esto se explica en el tutorial de Java sobre genéricos.
¿Quiere decir IA? cuando dices IB? – OscarRyz