我一直在想Java中的函數,我希望它存在。我想遍歷一個Arraylist(比如A類),它包含B類和C類的對象,它們都擴展了A.這個想法,我只想遍歷(例如)ArrayList中的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);
}
}
答:
public class A {
}
B:
public class B extends A {
String hi = "hi";
}
C:
public class C extends A {
}
編輯:因爲很多人回答這個問題:我知道使用instanceof。我想回路更快的方式,通過陣列,其中的類B.
中的所有對象
您必須遍歷所有列表以及列表中的每個對象,以檢查它是否是您想要的類。您可能希望查看下面答案中已經聲明的keywork「實例」,但是我擔心代碼將與您所使用的代碼類似(但方法實例更好/更乾淨) – Pitelk
在你編輯它之前的問題並不清楚你要求什麼。 – JRSofty