Durante o desenvolvimento de um framework surgiu a necessida...
Assinale a alternativa CORRETA.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: C
Fundamento decisivo: O enunciado exige invocação dinâmica de um método a partir de nomes em string; a decisão depende de saber que Java possui reflection nativa e que esse recurso resolve esse tipo de acesso em tempo de execução.
- Se o problema envolve descobrir classe, método ou membro em tempo de execução por identificadores como nome, verifique primeiro a API de reflection da linguagem.
- Em Java, confirme a existência da solução nativa pela combinação de Class com java.lang.reflect antes de aceitar necessidade de bytecode ou biblioteca externa.
- Quando uma alternativa negar uso de reflection para invocação dinâmica de método, confronte com o critério técnico: obtenção de Method por nome e invocação dinâmica.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
A alternativa CORRETA é a C: A linguagem Java implementa o conceito de reflexão computacional por meio do pacote import java.lang.reflect. e o problema do enunciado pode ser resolvido a partir desse conceito.*
Justificativa:
* C está CORRETA: O Java possui suporte nativo à reflexão computacional (Reflection API) através do pacote java.lang.reflect (junto com a classe java.lang.Class). Ela permite inspecionar e invocar dinamicamente classes, métodos, atributos e construtores em tempo de execução usando seus nomes em formato de string (por exemplo, utilizando Class.forName(), getMethod() e invoke()).
* A está incorreta: O Java suporta reflexão nativamente desde suas primeiras versões, não sendo necessário manipular bytecode nem depender de bibliotecas externas para isso.
* B está incorreta: O conceito de reflexão serve exatamente para resolver problemas como o descrito no enunciado (invocar métodos dinamicamente a partir do nome).
* D está incorreta: A reflexão é plenamente compatível com máquinas virtuais e é um dos pilares de ecossistemas Java (usada extensivamente por frameworks como Spring, Hibernate e JUnit).
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo