ArrayList, содержащий разные объекты одного и того же суперкласса - как получить доступ к методу подкласса
Привет ямне интересно, есть ли простое решение моей проблемы,
У меня есть :ArrayList
ArrayList animalList = new ArrayList();
/* I add some objects from subclasses of Animal */
animalList.add(new Reptile());
animalList.add(new Bird());
animalList.add(new Amphibian());
Все они реализуют методmove()
-Bird
летит когдаmove()
называется. Я знаю, что могу получить доступ к общим методам и свойствам суперкласса, используя этот
public void feed(Integer animalIndex) {
Animal aAnimal = (Animal) this.animalList.get(animalIndex);
aAnimal.eat();
}
Тот'хорошо, но теперь я хотел бы получить доступ кmove()
метод подклассBird
есть. Я мог бы сделать это, бросивAnimal
как :Bird
Bird aBird = (Bird) this.animalList.get(animalIndex);
aBird.move();
В моей ситуации я неЯ не хочу этого делать, так как это будет означать, что у меня есть 3 различных набора вышеуказанного кода, по одному для каждого подтипа.Animal
Кажется, немного излишним, есть ли лучший способ?