またはList<Base>
のようないくつかの実装のすべてのオブジェクトを含む があります。たとえば、すべての s を取得するために、完全なリストのサブセットを抽出するにはどうすればよいですか?Foo
Bar
Foo
以下は機能しますが、非常に醜いです (コードの重複、型キャストなど)。
class Base;
class Foo extends Base;
class Bar extends Base;
List<Base> bases;
List<Foo> getFoos() {
List<Foo> foos = new ArrayLista<Foo>();
for (Base base : bases) {
foos.add((Foo) base);
}
return foos;
}
List<Bar> getBars() {
List<Bar> Bars = new ArrayLista<Bar>();
for (Base base : bases) {
Bars.add((Bar) base);
}
return Bars;
}
これはどのように改善できますか?