Я задавался вопросом о функции в Java, которая, я надеюсь, существует. Я хочу перебирать Arraylist (скажем, класса A), который содержит объекты классов B и C, которые оба расширяют A. Идея, я хочу перебирать только (например) объекты класса B в ArrayList.
Как это возможно, как короткий пример в коде ниже, и без длинного?
Основной класс:
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: Потому что так много людей отвечают на этот вопрос: Я знаю об использовании instanceof. Мне нужен более быстрый способ перебора всех объектов в массиве, класс которого B.