Mi sono chiesto una funzione in Java, che spero esista. Voglio scorrere un Arraylist (diciamo della classe A), che contiene oggetti di classe B e C che estendono entrambi A. L'idea, io voglio solo scorrere attraverso (per esempio) gli oggetti della classe B nella ArrayList.Iterating through Arraylist con classi estese
Com'è possibile, come il breve esempio nel codice sottostante e senza quello lungo?
La classe principale:
import java.util.*;
public class Test {
public static void main(String[] args) {
new Test();
}
Test() {
ArrayList<A> a = new ArrayList<A>();
a.add (new B());
a.add (new C());
a.add (new C());
a.add (new B());
a.add (new C());
for (A aObject : a) { // this works, I want it shorter
if (aObject instanceof B) {
B b = (B) aObject;
System.out.println (b.hi);
}
}
for (B b : a) // like this?
System.out.println (b.hi);
}
}
A:
public class A {
}
B:
public class B extends A {
String hi = "hi";
}
C:
public class C extends A {
}
EDIT: Perché così tante persone rispondono a questo: io conosco l'uso di instanceof. Voglio un modo più veloce per scorrere tutti gli oggetti nella matrice, di cui la classe è B.
È necessario ripetere l'elenco e per ogni oggetto dell'elenco per verificare se è della classe desiderata. Potresti voler dare un'occhiata all'istanza "istanza di" come già detto in una risposta sotto ... ma temo che il codice sia simile a quello che hai (ma l'istanza di approccio è migliore/più pulita) – Pitelk
la domanda prima della modifica non era chiara su ciò che stavi chiedendo. – JRSofty