Anotações personalizadas (Anotação)

Índice

1. Definição de anotação

2. Definição de meta anotação

3. Anotações personalizadas (anotações personalizadas com o mesmo nome substituirão as anotações originais)

4. Arquitetura de anotação (introdução aos parâmetros de meta-anotação)


1. Definição de anotação

        As anotações são usadas para associar qualquer informação ou metadados (metadados) a elementos do programa (classes, métodos, variáveis ​​de membro, etc.). É um tipo de explicação, configuração e informação descritiva, que não tem nada a ver com o negócio específico e não afetará a lógica normal do negócio. Anotações são usadas como tags em programas Java, e existem programas específicos para descobrir tags

2. Definição de meta anotação

        Meta-anotações são anotações especialmente usadas para anotar outras anotações. Parece um pouco complicado, mas na verdade são anotações fornecidas especialmente para anotações personalizadas. java.lang.annotation fornece quatro meta-anotações:

  • @Documented – se a anotação será incluída no JavaDoc
  • @Retenção – quando usar esta anotação
  • @Target – onde a anotação é usada
  • @Inherited – Se deve permitir que subclasses herdem a anotação
  • @Repeatable - Se a anotação pode ser repetida, introduzida por jdk1.8

3. Anotações personalizadas (anotações personalizadas com o mesmo nome substituirão as anotações originais)

Criar uma nova classe de anotação 

@Documented//Descreve que a anotação pode aparecer no javadoc 

@Target(ElementType.TYPE)//Especifica o tipo de Herdado como ElementType.TYPE. 

@Retention(RetentionPolicy.RUNTIME)//A política que especifica Inherited é RetentionPolicy.RUNTIME 

@Inherited//A anotação marcada por ele terá herança. 
public @interface Minha anotação1 { 
}

4. Arquitetura de anotação (introdução aos parâmetros de meta-anotação)

 

 

        ①, (01) Uma anotação está associada a uma RetentionPolicy . Pode ser entendido como: todo objeto Annotation terá um atributo RetentionPolicy único.

               (02) 1 Annotation está associada a 1~n ElementTypes . Pode ser entendido como: Para cada objeto Annotation, podem existir vários atributos ElementType.

               (03) A anotação possui várias classes de implementação, incluindo: Deprecated, Documented, Inherited, Override e assim por diante. Cada classe de implementação de Annotation é "associada a 1 RetentionPolicy" e "associada a 1~n ElementTypes".

        ②, Anotação é uma interface.

"Cada anotação" está associada a "1 RetentionPolicy" e associada a "1~n ElementType". Pode ser facilmente entendido como: todo objeto Annotation possui um atributo RetentionPolicy exclusivo; quanto ao atributo ElementType, existem 1~n.

        ③ ElementType é um tipo de enumeração Enum, que é usado para especificar o tipo de anotação.

"Cada anotação" está associada a "1~n ElementTypes". Quando Annotation está associado a um ElementType, significa: A anotação tem um determinado propósito.

  • ElementType.TYPE: classe, interface, anotação, enum
  • ElementType.CONSTRUCTOR: Construtor
  • ElementType.FIELD: constantes de variáveis ​​de membro, objetos, propriedades, enumerações
  • ElementType.LOCAL_VARIABLE: variável local
  • ElementType.METHOD: método
  • ElementType.PACKAGE: 包
  • ElementType.PARAMETER: parâmetro
  • ElementType.ANNOTATION_TYPE): Anotação
  • ElementType.TYPE_PARAMETER: parâmetro de tipo, indicando que esta anotação pode ser utilizada antes da declaração de Type, introduzida por jdk1.8.
  • ElementType.TYPE_USE: Uma anotação do tipo, indicando que esta anotação pode ser usada em todos os lugares onde o Type é usado (como: genéricos, conversão de tipo, etc.), introduzido por jdk1.8.

        ④. RetentionPolicy é um tipo de enumeração Enum, que é usado para especificar a estratégia (tipo) de anotação. Em termos leigos, o escopo da anotação de diferentes tipos de RetentionPolicy é diferente.

                a. Se o tipo da anotação for SOURCE , significa que a anotação só existe durante o processamento do compilador. Após o processamento do compilador, a anotação é inútil. Por exemplo, o sinalizador "@Override" é uma anotação. Quando ele modifica um método, significa que o método substitui o método da classe pai; e a verificação da sintaxe será realizada durante a compilação! Depois que o compilador terminar o processamento, "@Override" não terá efeito.

                b) Se o tipo de anotação for CLASS , significa: o compilador armazena a anotação no arquivo .class correspondente à classe, que é o comportamento padrão da anotação.
                c. Se o tipo de anotação for RUNTIME , significa: o compilador armazena a anotação na classe

Acho que você gosta

Origin blog.csdn.net/qq_52240237/article/details/132183592
Recomendado
Clasificación