Questão de Programação — Linguagens de programação — FGV 2023
Programação›Linguagens de programação
Código
fg072436
Banca
FGV
Órgão
TJ-RN
Ano
2023
Nível
Superior
Cargo
Analista Judiciário - Tecnologia de Informação – Análise de Sistemas
O desenvolvedor Luís implementou a interface Java ProcessoAB. O ProcessoAB mapeia a conversão de objetos da classe ProcessoA em objetos da classe ProcessoB através da ferramenta MapStruct. O atributo “nome” do ProcessoA corresponde ao atributo “titulo” do ProcessoB. A fim de orientar o correto mapeamento entre atributos de nomes diferentes, Luís recorreu à anotação Java do MapStruct que torna explícitos os nomes dos atributos mapeados.Luís recorreu à anotação do MapStruct:
AMapper;
BMapping;
CAfterMapping;
DMapperConfig;
EBeanMapping.
Revelar gabarito e comentário▾
GabaritoB — Mapping;
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
MapStruct: anotação para mapeamento explícito
Gabarito: letra B. No MapStruct, a anotação @Mapping é a responsável por tornar explícito o mapeamento entre atributos de nomes diferentes, permitindo definir, por exemplo, que o atributo "nome" de uma classe de origem corresponde ao atributo "titulo" da classe de destino.
A questão é de conhecimento direto da biblioteca MapStruct, uma ferramenta de mapeamento entre objetos (bean mapping) muito usada em projetos Java. Cada anotação tem uma finalidade específica:
Alternativa A — ❌ Incorreta
@Mapper é usada para marcar uma interface ou classe abstrata como um mapper, ou seja, o ponto de entrada para o MapStruct gerar a implementação. Não define mapeamentos individuais entre atributos.
Alternativa B — ✅ Correta ⟵ GABARITO
@Mapping é a anotação que especifica a correspondência entre um campo de origem e um campo de destino. Seus atributos source e target permitem indicar exatamente quais propriedades se relacionam, mesmo que os nomes sejam diferentes.
Alternativa C — ❌ Incorreta
@AfterMapping é uma anotação de ciclo de vida: marca um método que será executado após o mapeamento principal, útil para ajustes finos, mas não para declarar o mapeamento entre atributos.
Alternativa D — ❌ Incorreta
@MapperConfig serve para centralizar configurações comuns a vários mappers (como mapeamentos padrão, uso de componentes, etc.). Não é o recurso para mapear um atributo específico.
Alternativa E — ❌ Incorreta
@BeanMapping é usada para definir opções gerais de mapeamento de um bean, como ignorar campos por padrão ou aplicar qualificadores, mas não mapeia atributos individualmente.
NÃO CAIA NESSA!
O nome da anotação @Mapping pode parecer genérico, mas no MapStruct é a que faz a ligação explícita entre source e target. Cuidado para não confundir com @Mapper (a interface) ou @MapperConfig (configuração geral).
Dica de estudo: Memorize a função de cada anotação principal do MapStruct: @Mapper (declara o mapper), @Mapping (mapeia atributos), @AfterMapping/@BeforeMapping (ciclo de vida), @MapperConfig (configuração compartilhada) e @BeanMapping (opções de bean). Resolver questões de múltipla escolha é o melhor jeito de fixar.