for-each ループに関連して継承はどのように機能しますか? と の 2 つのクラスが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 チュートリアルなど) を読み続けているため、ほとんどの場合、カプセル化を増やすより良い解決策を見つけることができます。これを行うよりエレガントな方法はありますか?