我有一个List<Base>
包含多个实现的所有对象,例如Foo
or Bar
。如何提取完整列表的子集以获取例如 all Foo
s?
以下工作但非常难看(重复代码,类型转换等)。
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;
}
如何改进?