Se si intende quella classe A IA implementa, piuttosto che IB, allora il vostro codice dovrebbe essere più che bene dire
for (A item : list) {
// handle item as if it is an IA
}
dal momento che tutti come sono, per definizione IA.
Nel frattempo, non è disponibile alcun jolly per <? implements C>
. C'è <? extends C>
e C
può essere un'interfaccia o una classe; tuttavia, questo non è necessario per quello che sembra che tu stia cercando di fare.
Se si vuole esplicitamente dire for (IA item : list)
perché non si sta garantendo che gli elementi in tale elenco sono A
s, ma sta garantendo che essi sono IA
s, allora penso che tu abbia un piccolo problema (non posso dire per certo, dal momento che non hai detto dove si trova questo codice di elaborazione dell'elenco). A List<A>
è non a List<IA>
per definizione; se stai creando un List<A>
e poi lo passi a un metodo che si aspetta un List<IA>
, riceverai un errore in fase di compilazione. Tuttavia, è possibile creare uno List<IA>
e riempirlo con A
s. La ragione di ciò è spiegata nel tutorial di Java sui generici.
fonte
2009-09-22 15:21:58
Intendi IA? quando dici IB? – OscarRyz