Questão de Programação — Plataforma Java — FGV 2025
Programação›Plataforma Java
Código
fg121246
Banca
FGV
Órgão
TCE-PE
Ano
2025
Nível
Superior
Cargo
Analista de Controle Externo - Tecnologia da Informação
O trecho de código a seguir representa um exemplo de emprego de anotações em Java:Sobre desenvolvimento de códigos em JavaScript, considere o exemplo dado e analise as afirmativas a seguir.I. Anotações podem ser usadas pelo compilador para detectar erros ou suprimir avisos.II. Ferramentas podem processar informações de anotações para gerar código e arquivos XML.III. Algumas anotações estão disponíveis para serem examinadas em tempo de execução.Está correto o que se afirma em:
AI, apenas.
BI e II, apenas.
CI e III, apenas.
DII e III, apenas.
EI, II e III.
Revelar gabarito e comentário▾
GabaritoE — I, II e III.
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”.
Anotações em Java
Gabarito: letra E. As três afirmativas estão corretas: anotações em Java podem ser usadas pelo compilador para detectar erros ou suprimir avisos (I), ferramentas podem processá-las para gerar código e arquivos XML (II), e algumas anotações estão disponíveis para exame em tempo de execução (III). Esse é o papel central das anotações na plataforma Java, que as utiliza amplamente para configuração e metadados.
Anotações (ou annotations) são uma forma de metadados introduzida no Java 5, que permitem adicionar informações ao código-fonte sem alterar sua lógica. Elas são declaradas com o prefixo @ (como @Override, @Deprecated, @SuppressWarnings) e podem ser aplicadas a classes, métodos, campos, parâmetros e até mesmo a outras anotações. O grande valor das anotações está na sua versatilidade: elas podem ser processadas em diferentes momentos e por diferentes agentes, o que as torna uma ferramenta poderosa tanto para o compilador quanto para frameworks e ferramentas de desenvolvimento.
A afirmativa I está correta porque o compilador Java usa anotações para verificar o código e emitir avisos ou erros. Por exemplo, @Override faz o compilador verificar se o método realmente sobrescreve um método da superclasse, gerando erro caso contrário. Já @SuppressWarnings instrui o compilador a suprimir avisos específicos, como os de uso de código obsoleto. A afirmativa II também está correta: ferramentas como o JAXB (Java Architecture for XML Binding) e o Hibernate processam anotações em tempo de compilação ou de execução para gerar código, mapeamentos ou arquivos XML. Por fim, a afirmativa III é verdadeira porque anotações com retenção RUNTIME podem ser lidas via reflexão em tempo de execução, permitindo que frameworks como o Spring e o JUnit interpretem as anotações para configurar o comportamento da aplicação.
A pegadinha desta questão está na confusão entre Java e JavaScript. O enunciado menciona "desenvolvimento de códigos em JavaScript", mas o exemplo e as afirmativas tratam claramente de anotações da plataforma Java. JavaScript não possui anotações no sentido do Java — ele usa decorators (uma proposta experimental) ou simplesmente funções. A banca explora exatamente essa troca de nomes para induzir o candidato ao erro. Portanto, o que decide a questão é reconhecer que o tema é Java e que as três afirmativas descrevem corretamente os usos das anotações nessa linguagem.
Anotações em Java
1O que são
Metadados (prefixo @)
Não alteram a lógica
Aplicáveis a classes, métodos, campos
2Usos
Compilador detecta erros/suprime avisos
@Override, @SuppressWarnings
Ferramentas geram código/XML (Hibernate, JAXB)
Exame em tempo de execução via reflexão (Spring, JUnit)
3Retenção
RUNTIME → reflexão
(demais políticas)
LEVEL · soulevel.com.br
Item I — ✅ Correto
As anotações podem ser usadas pelo compilador para detectar erros ou suprimir avisos. Um exemplo clássico é a anotação @Override, que faz o compilador verificar se o método anotado realmente sobrescreve um método da superclasse, gerando um erro de compilação caso contrário. Outro exemplo é @SuppressWarnings, que instrui o compilador a suprimir avisos específicos, como os de uso de código obsoleto ou de operações não verificadas. Essa é uma das finalidades primárias das anotações, conforme a documentação oficial da linguagem.
Item II — ✅ Correto
Ferramentas podem processar informações de anotações para gerar código e arquivos XML. Isso é amplamente utilizado em frameworks como o Hibernate (mapeamento objeto-relacional) e o JAXB (binding de XML). Por exemplo, anotações como @Entity e @Column no Hibernate permitem que a ferramenta gere automaticamente as tabelas no banco de dados, enquanto @XmlRootElement no JAXB permite gerar a estrutura XML correspondente à classe. Esse processamento pode ocorrer em tempo de compilação (via annotation processors) ou em tempo de execução.
Item III — ✅ Correto
Algumas anotações estão disponíveis para serem examinadas em tempo de execução. Isso é controlado pela política de retenção (@Retention): anotações com RetentionPolicy.RUNTIME podem ser lidas via reflexão durante a execução do programa. Frameworks como o Spring e o JUnit dependem disso para interpretar anotações como @Autowired, @RequestMapping ou @Test e configurar o comportamento da aplicação dinamicamente. Essa capacidade é fundamental para o funcionamento de muitos frameworks modernos.
Conclusão: As três afirmativas estão corretas, portanto a alternativa correta é a letra E.