Me he estado preguntando acerca de una función en Java, que espero que exista. Quiero iterar a través de un Arraylist (digamos de clase A), que contiene objetos de clase B y C que se extienden a A. La idea, solo quiero iterar (por ejemplo) los objetos de la clase B en ArrayList.Iterando a través del Arraylist con clases ampliadas
¿Cómo es posible, como el ejemplo corto en el siguiente código, y sin el largo?
La clase principal:
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 {
}
EDITAR: Porque muchas personas responden esto: sé del uso de instanceof. Quiero una manera más rápida para recorrer todos los objetos de la matriz, de la que es la clase B.
Tiene que recorrer en iteración toda la lista y para cada objeto de la lista para comprobar si pertenece a la clase que desea. Es posible que desee buscar en la clave "instancia de" como ya se indicó en una respuesta a continuación ... pero me temo que el código será similar al que tiene (pero la instancia de enfoque es mejor/más limpia) – Pitelk
pregunta antes de editar no era claro en cuanto a lo que estabas pidiendo. – JRSofty