、などのすべての種類の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;
}
}