O princípio da anotação Java
java: use anotação, //www.vevb.com/article/101747.htm
O que é anotação
As anotações também são chamadas de metadados, como nosso @Override comum e @Deprecated. As anotações são um recurso introduzido na versão JDK1.5. Eles são usados para explicar o código e podem anotar pacotes, classes, interfaces, campos, parâmetros de método, variáveis locais etc. Suas principais funções são as seguintes:
As anotações gerais podem ser divididas em três categorias:
Uma categoria são as anotações padrão que acompanham o Java, incluindo @Override, @Deprecated e @suppresswarnings, que são usadas para indicar que um determinado método é reescrito, uma determinada classe ou método está desatualizada e um aviso a ser ignorado. Após a marcação dessas anotações, o compilador verificará.
Um tipo é a meta -anotação. A anotação da meta é a anotação usada para definir anotações, incluindo @retention, @target, @inerited, @Documented. @Retention é usado para indicar o estágio em que a anotação é retida, o @target é usado para indicar o escopo da anotação usada, @Inerited é usado para indicar que a anotação pode ser herdada e @Documented é usado para indicar se deve gerar um documento Javadoc.
Um tipo é as anotações personalizadas. Você pode definir anotações de acordo com suas próprias necessidades e usar metanotações para anotar anotações personalizadas.
Princípio da anotação:
Vamos ver como apoiar as anotações no sistema Java. Vamos voltar ao exemplo acima de anotação personalizada. Para teste de anotação, como segue. Se você anotar a classe AnotationTest, o valor da declaração de anotação poderá ser obtido através do anotação.class.getannotation (test.class) no tempo de execução. Pode ser visto na frase acima que obtém a anotação de teste da estrutura da classe, portanto, deve ser que a anotação tenha sido adicionada à estrutura da classe em algum momento.
@Test ("test") public class AnotationTest {public void test () {}}Do código -fonte Java para a classe Bytecode é feito pelo compilador. O compilador analisará o código -fonte Java e gerará um arquivo de classe. As anotações também são processadas pelo compilador no momento da compilação. O compilador processará símbolos de anotação e os anexará à estrutura da classe. De acordo com a especificação da JVM, a estrutura do arquivo de classe é um formato estritamente ordenado. A única maneira de anexar informações à estrutura da classe é salvá -las nos atributos atributos da estrutura da classe. Sabemos que, para classes, campos e métodos, existem suas próprias estruturas de tabela específicas na estrutura da classe e cada um tem seus próprios atributos. Para anotações, o escopo de suas funções também pode ser diferente. Eles podem ser usados em classes, ou em campos ou métodos. Neste momento, o compilador armazenará as informações de anotação sobre os atributos da classe, campos e métodos de acordo.
Após a compilação de nossa classe de anotação, uma propriedade RunTimeVisiBleanNoTations será incluída no arquivo AnoTationTest.class correspondente. Como essa anotação é aplicada à classe, essa propriedade é adicionada ao conjunto de atributos da classe. Ou seja, o valor do par de valores-chave = teste da anotação de teste será registrado. Quando a JVM carrega o bytecode do arquivo ANNOTATIONTEST.CLASS, o valor da propriedade RunTimeVisiBleanNotações será salvo no objeto de classe do anotação, o objeto de anotação de teste pode ser obtido através do annotationTest.class.getAnnotation (test.lation) e depois o valor da propriedade.
Pode haver perguntas aqui, qual é o objeto de anotação de teste? De fato, a essência da anotação após ser compilada é uma interface que herda a interface de anotação; portanto, o @Test é na verdade "teste de interface pública estende a anotação". Quando chamamos o ANNOTATIONTEST.CLASS.GETANNOTATION (TEST.Class), o JDK gerará um objeto que implementa a interface de teste por meio de proxy dinâmico e definirá o valor da propriedade RunTimeVisibleannotações para esse objeto. Este objeto é um objeto de anotação de teste. O valor da anotação pode ser obtido através do método Value ().
Todo o processo do mecanismo de implementação da anotação Java é mostrado acima. Sua implementação requer a cooperação do compilador e da JVM.
Obrigado pela leitura, espero que isso possa ajudá -lo. Obrigado pelo seu apoio a este site!