繼承與for-each循環相關如何工作?想象一下,我有兩個類:和SuperClass
,和我有以下ArrayList
。繼承是如何與for-each循環一起工作的?
/**
* Containes both SuperClass and SubClass instances.
*/
ArrayList<SuperClass> superClasses = new ArrayList<SuperClass>();
是否有可能以這樣的方式來只能選擇subClasses
遍歷superClasses
。
以下:
for(SubClass subClass : superClasses){
// Do Foo
}
並沒有這樣做。 以下是我能得到工作的唯一的東西:但是我不想用instanceof
,除非絕對必要
for(SuperClass superClass : superClasses){
if(superClass instanceof SubClass){
// Do Foo
}
}
,我繼續閱讀無處不在(StackOverflow上,甲骨文教程等等),人們可以幾乎總是找到一個更好的解決方案來增加封裝。有沒有更好的方法來做到這一點?
不,不是一個我能想到的。你需要使用'instanceof'! – NINCOMPOOP
有點類似的問題:http://stackoverflow.com/questions/12623255/java-for-each-loop-iteration-over-extended-objects – NINCOMPOOP
@DuncanJones請參閱編輯:) – maxf130