Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — COPEVE-UFAL 2026

ProgramaçãoLinguagens de programação
Código
qg663982
Banca
COPEVE-UFAL
Órgão
IFAL
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática
O Polimorfismo Paramétrico em Java, implementado via Generics, utiliza o mecanismo de Type Erasure para manter a compatibilidade com versões legadas da JVM. Esse mecanismo impõe restrições à variância dos tipos. Para lidar com isso, a linguagem utiliza coringas (wildcards) com limites superiores (extends) e inferiores (super). Para a questão, considere o método apresentado:1.png 544×68Com base nas regras de covariância e contravariância, assinale a alternativa que apresenta uma operação tecnicamente válida, assumindo que a classe Cachorro herda explicitamente da classe Animal.
  1. AA instrução lista.add(new Object()); dentro do método, já que Object é um supertipo de Animal e, portanto, compatível com o limite inferior definido.
  2. BA instrução Animal a = lista.get(0); dentro do método, visto que o limite inferior garante que todos os elementos da lista sejam, no mínimo, do tipo Animal.
  3. CA chamada do método utilizando registrarAnimais(new ArrayList());, uma vez que Cachorro é um tipo compatível com a hierarquia de Animal.
  4. DA atribuição List <? super animal> lista = new ArrayList <object>(); é inválida, pois o tipo genérico deve ser obrigatoriamente Animal ou um de seus descendentes.
  5. EA instrução lista.add(new Cachorro()); dentro do escopo do método, pois o wildcard ? super Animal garante que a lista pode aceitar com segurança instâncias de Animal ou de qualquer uma de suas subclasses.
Revelar gabarito e comentário

GabaritoE — A instrução lista.add(new Cachorro()); dentro do escopo do método, pois o wildcard ? super Animal garante que a lista pode aceitar com segurança instâncias de Animal ou de qualquer uma de suas subclasses.

Link permanente: /questoes/qg663982