En plus de la rétention, il y a trois autres annotations fournies par JDK 5, à savoir cible, héritée et documentée.
La cible cible est l'endroit où l'annotation cible est utilisée, qui définit le moment de l'annotation utilisée, c'est-à-dire le type d'éléments de programme auxquels l'annotation est applicable. Si une annotation de méta cible n'existe pas dans la déclaration du type d'annotation, le type déclaré peut être utilisé sur n'importe quel élément de programme. Si une telle métaannotation existe, le compilateur applique la limite d'utilisation spécifiée.
La cible est définie comme suit:
@ Documentée @ retenue (retentionPolicy.runtime) @target (elementType.annotation_type) public @Interface Target {elementType [] value ();}Comme vous pouvez le voir, Target n'a qu'un seul attribut de valeur, et son type est le type élément ElementType. La déclaration ElementType est la suivante:
Les annotations publiques ElementType {/ ** peuvent être utilisées dans les classes, les interfaces (y compris les types d'annotation) ou les déclarations de l'énumération * / type, / ** Déclarations de champ (y compris les constantes enum) * / champ, / ** Déclaration de méthode * / méthode, / ** Déclarations de paramètres * / Paramètre, / ** DÉCLARATIONS DE CONSTRUCORD Déclarations de type annotation * / annotation_type, / ** Déclarations de packages * / package}Les annotations documentées indiquent si les informations d'annotation sont ajoutées au document lors de la création de Javadoc. Si l'annotation utilise @Documented lors de la déclaration, les informations d'annotation seront ajoutées au Javadoc lors de la création du Javadoc. La déclaration d'annotation est la suivante:
@ Documentée @ retenue (valeur = runtime) @target (value = annotation_type) // indique que cette annotation ne peut être utilisée que lors de la déclaration de l'annotation, c'est-à-dire, Meta Annotation public @Interface documentée {}L'annotation héritée est également une méta-annotation, et la déclaration est la suivante:
@ Documenté @ retention (valeur = runtime) @target (value = annotation_type) public @interface hérité {}Les annotations héritées indiquent si les annotations seront héritées par les sous-classes et que la valeur par défaut n'est pas héritée. Lorsqu'une annotation est déclarée, l'annotation @inherited est utilisée, l'annotation sera héritée par une sous-classe de la classe en utilisant l'annotation.