【发布时间】:2012-01-15 21:31:19
【问题描述】:
我一直想知道 Java 中的一个函数,我希望它存在。我想遍历一个 Arraylist(比如 A 类),它包含 B 类和 C 类的对象,它们都扩展了 A。这个想法,我只想遍历(例如)ArrayList 中 B 类的对象。
这怎么可能,就像下面代码中的简短示例,而没有长示例?
主类:
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);
}
}
答:
public class A {
}
乙:
public class B extends A {
String hi = "hi";
}
C:
public class C extends A {
}
编辑:因为很多人回答这个问题:我知道 instanceof 的用法。我想要一种更快的方法来遍历数组中的所有对象,其中类是 B。
【问题讨论】:
-
您必须遍历所有列表和列表中的每个对象以检查它是否属于您想要的类。您可能想查看下面答案中已经说明的关键“实例”......但我担心代码将与您拥有的代码相似(但方法实例更好/更清洁)跨度>
-
您编辑之前的问题并不清楚您的要求。