Parte 1. Escrevi brevemente sobre anotações do tipo SOURCE e CLASS. Vale a pena ler, para não se perder na segunda parte e expandir um pouco o seu "mal-entendido" =) Prometo que com certeza haverá pelo menos uma palavra que você conhece!
A primeira vez que vi anotações nas tarefas aqui, de alguma forma não prestei muita atenção a elas. Há @Override aqui e ali, mas o IDEA adiciona isso, então achei que deveria ser assim. Com o tempo, percebi que tudo é muito mais profundo. Conforme você estuda, as anotações podem parecer um tanto inúteis, mas necessárias. Você não sabe por que eles existem ou o que eles fazem. Você leu alguns artigos que diziam: "é tão bom termos anotações agora, tudo se tornou tão simples". Mas eu não sabia como as coisas eram antes e não entendia que as coisas são mais fáceis agora. Agora eu sei e quero compartilhar um pouco. Existem 3 tipos de anotações (RetentionPolicy):
Nativo - nunca vi isso e nunca usei. Acho que essa é uma anotação bastante rara, porque é usada quando você precisa executar código em outro idioma "nativo". Eu tentei e não consegui encontrar uma menção clara disso.
SuppressWarnings — Esta anotação costuma ser usada assim: @SuppressWarnings("unchecked"). Ele é usado para suprimir avisos que você já conhece. O exemplo anterior suprime avisos sobre conversões de tipo não verificadas. Novamente, este é o único uso que encontrei.
Gerado — Estou encontrando esta anotação agora devido a uma tarefa em que tenho que gerar classes a partir de arquivos XSD. Essas 3 anotações são bastante específicas e provavelmente desinteressantes para você no momento. Vou descrever o último.
Override - Você o usa constantemente e faz algo muito útil. Ao substituir um método, é fácil cometer um erro sem a ajuda do IDEA. Sejam erros de digitação ou erros simples, erros acontecem. Essa anotação garantirá que o método na classe pai corresponda ao nosso método (anotado). Isso garante que o método seja substituído em vez de adicionado. Ao refatorar o código, o método pai pode ser removido ou alterado. Novamente, esta anotação indicará um erro. Sem ele, nosso método simplesmente seria adicionado. Tedioso? Eu diria que sim. Não há muito o que aprender neste artigo. Quase tudo (90%) aqui descreve algo que você nunca usará ou usará muito raramente. Os 10% restantes estão dizendo olá e descrevendo a anotação @Override, que à primeira vista é inútil. Dito isto, acho que na segunda parte do artigo será mais interessante. Discutiremos anotações RUNTIME — elas interagem com o código durante a execução e fazem magia negra. Anotações. Parte 2. Lombok

- SOURCE — Anotações para o compilador
- CLASSE — As informações da anotação serão escritas em bytecode, mas não estarão disponíveis em tempo de execução. Eles dizem que a biblioteca padrão tem muitas anotações desse tipo, que agora são mantidas para compatibilidade com versões anteriores. Isso é usado para tarefas muito específicas.
- Perguntas e respostas no StackOverflow
- RUNTIME — Essas anotações são as mais populares. Eles são usados enquanto o código está sendo executado.
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- Nativo — Uma variável com esta anotação pode se referir ao código nativo;
- SuppressWarnings — Esta anotação suprime vários avisos do compilador;
- Gerado — Esta anotação marca o código-fonte que foi gerado;
- Substituir — Esta anotação verifica substituições de método.
GO TO FULL VERSION