如果我有一个水果列表,其中包含各种Fruit
实现,例如Apple
,Banana
等。该列表是必要的,因为其他方法对列表中的所有水果执行一般操作。
如何从列表中获取特定类型的所有对象?例如所有的苹果?进行 instanceof/if-else 检查非常难看,尤其是当有很多不同的类时。
以下如何改进?
class Fruit;
class Apple extends Fruit;
class Banana extends Fruit;
class FruitStore {
private List<Fruit> fruits;
public List<Apple> getApples() {
List<Apple> apples = new ArrayList<Apple>();
for (Fruit fruit : fruits) {
if (fruit instanceof Apple) {
apples.add((Apple) fruit);
}
}
return apples;
}
}