Wenn Sie diese Klasse A implementiert IA gemeint, sondern als IB, dann sollten Sie den Code einfach in Ordnung zu sagen
for (A item : list) {
// handle item as if it is an IA
}
seit alle As, per Definition IAs.
In der Zwischenzeit gibt es keinen Platzhalter für <? implements C>
. Es gibt <? extends C>
, und C
kann eine Schnittstelle oder eine Klasse sein; Dies ist jedoch nicht notwendig für das, was Sie scheinbar zu tun versuchen.
Wenn Sie ausdrücklich for (IA item : list)
sagen wollen, weil Sie garantiert nicht, dass Elemente in dieser Liste sind A
s, sind aber garantiert, dass sie IA
s, dann denke ich, Sie haben ein kleines Problem (ich kann nicht sagen, sicher, da Sie nicht gesagt haben, wo sich dieser Listenverarbeitungscode befindet). A List<A>
ist nicht a List<IA>
per Definition; Wenn Sie ein List<A>
erstellen und es dann an eine Methode übergeben, die List<IA>
erwartet, erhalten Sie einen Kompilierzeitfehler. Sie können jedoch eine List<IA>
erstellen und sie mit A
s füllen. Der Grund dafür ist in Javas Tutorial zu Generika erklärt.
Meinst du IA? wenn du IB sagst? – OscarRyz