Pular para o conteúdo principal

Questão de Programação — Linguagens de programação — FGV 2023

ProgramaçãoLinguagens 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:
  1. AMapper;
  2. BMapping;
  3. CAfterMapping;
  4. DMapperConfig;
  5. 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.

Gabarito: letra B.

Link permanente: /questoes/fg072436