Questão de Programação — Programação Orientada a Objetos — FCC 2022
Programação›Programação Orientada a Objetos
Código
fc065204
Banca
FCC
Órgão
TRT - 22ª Região (PI)
Ano
2022
Cargo
Analista Judiciário - Tecnologia da Informação
Em uma aplicação, considere a existência de uma classe chamada Advogado com o atributo nome e outra classe AdvogadoDto com o atributo nomeCompleto. Usando MapStruct, uma Analista criou a interface abaixo.
Para que o mapeamento seja realizado corretamente, as lacunas I e II devem ser preenchidas, correta e respectivamente, por
A@Mapper e @Mapping
B@Mapping e @Equals
C@MapStruct e @Mappings
D@MapStruct e @Map
E@Mapper e @Equity
Revelar gabarito e comentário▾
GabaritoA — @Mapper e @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ções @Mapper e @Mapping
Gabarito: letra A. Para que o MapStruct funcione corretamente, a interface deve ser anotada com @Mapper (lacuna I) e o método de mapeamento deve utilizar @Mapping para especificar a correspondência entre os campos (lacuna II).
A questão testa o conhecimento das anotações básicas do MapStruct, uma biblioteca muito utilizada em Java para geração automática de implementações de mapeamento entre objetos.
Alternativa A — ✅ Correta ⟵ GABARITO
A interface é anotada com @Mapper, e o método advogadoToAdvogadoDto recebe @Mapping(target = "nomeCompleto", source = "nome"). Essa é a sintaxe padrão do MapStruct: @Mapper declara o componente como um mapper, e @Mapping indica a transformação de um atributo de origem para um atributo de destino.
Alternativa B — ❌ Incorreta
@Mapping está na lacuna I, mas @Equals não é uma anotação do MapStruct; @Equals (ou @Equatable) é geralmente usada em outras bibliotecas, como no Lombok para gerar equals/hashCode. O correto para a lacuna I seria @Mapper.
Alternativa C — ❌ Incorreta
A anotação @MapStruct não existe — o nome correto é @Mapper. E @Mappings existe como contêiner para múltiplas @Mapping, mas o uso de uma única @Mapping é suficiente e mais comum. Neste caso, a lacuna II pede a anotação que faz o mapeamento, que é @Mapping, e não @Mappings.
Alternativa D — ❌ Incorreta
Novamente, @MapStruct não existe. @Map não é uma anotação do MapStruct; em Java, java.util.Map é uma interface de coleção. A anotação correta para mapeamento de campos é @Mapping.
Alternativa E — ❌ Incorreta
@Mapper está correto para a lacuna I, mas @Equity não tem relação com MapStruct. @Equity não é uma anotação reconhecida no ecossistema Java para mapeamento.
PEGA ESSA DICA!
Em provas sobre MapStruct, lembre-se: a interface do mapper sempre leva @Mapper; os métodos de conversão usam @Mapping (ou @Mappings quando há mais de uma correspondência). Fique atento a nomes inventados como @MapStruct, @Equals, @Equity, @Map.