如果我有一个水果列表,其中包含各种Fruit实现,如Apple,Banana等。该列表是必需的,因为其他方法会对列表中的所有水果执行常规操作。
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; } }
您应该知道-实例是不好的代码实践。
编写.getType()(返回的对象的枚举类型)怎么办?