O que é covariância de tipos?
sobes.tech IA
Resposta da IA
A covariância de tipos é uma propriedade do sistema de tipos que permite usar um tipo mais específico (subtipo) onde se espera um tipo mais geral (supertipo).
No contexto do Java, isso frequentemente se manifesta ao trabalhar com herança e genéricos. Por exemplo, se a classe Gato herda de Animal, a covariância permite usar Gato onde se espera um Animal.
No entanto, em Java, os genéricos são invariantes por padrão, ou seja, List<Gato> não é um subtipo de List<Animal>. Para suportar a covariância, usam-se tipos curinga com ? extends:
List<? extends Animal> animais = new ArrayList<Gato>();
Aqui, ? extends Animal indica que a lista contém objetos do tipo Animal ou seus subtipos, o que permite ler objetos da lista com segurança, mas proíbe adicionar novos elementos (exceto null).
Assim, a covariância ajuda a usar subtipos em locais onde são esperados tipos mais gerais, mantendo a segurança de tipos e a flexibilidade do código.