List<Dog> é uma subclasse de List<Animal>? Por que os genéricos em Java não são polimórficos?
Olá, colegas! Sou novo em Java e estou tentando entender os genéricos. Escrevi um código simples, mas o compilador reclama e não entendo por quê.
Tenho uma hierarquia de classes: Animal é a classe pai, Dog extends Animal e Cat extends Animal.
Agora quero escrever um método que aceite uma lista de animais e exiba seus nomes. Logicamente, se eu passar uma lista de cães, deveria funcionar, já que Dog é um Animal. Mas o compilador dá erro!
Aqui está o código:
```java
public class GenericsTest {
public static void main(String[] args) {
List dogs = new ArrayList<>();
dogs.add(new Dog("Rex"));
dogs.add(new Dog("Buddy"));
printAnimalNames(dogs); // Erro de compilação!
}
public static void printAnimalNames(List animals) {
for (Animal a : animals) {
System.out.println(a.getName());
}
}
}
```
Erro: `incompatible types: List cannot be converted to List`.
No answers yet.
Faça login para deixar uma resposta