继承如何与 for-each 循环相关?想象一下我有两个类:SubClass
和SuperClass
,并且我有以下ArrayList
。
/**
* Containes both SuperClass and SubClass instances.
*/
ArrayList<SuperClass> superClasses = new ArrayList<SuperClass>();
superClasses
是否可以以仅选择的方式进行迭代subClasses
。
以下:
for(SubClass subClass : superClasses){
// Do Foo
}
不这样做。以下是我唯一可以开始工作的事情:
for(SuperClass superClass : superClasses){
if(superClass instanceof SubClass){
// Do Foo
}
}
但是,除非绝对必要,否则我不想使用instanceof
,因为我一直在到处阅读(StackOverflow、Oracle 教程等),几乎总能找到一种更好的解决方案来增加封装性。有没有更优雅的方式来做到这一点?