Que signifient les constantes Java ElementType annotation?

java.lang.annotation.ElementType :

Un type d’élément de programme. Les constantes de ce type énuméré fournissent une classification simple des éléments déclarés dans un programme Java. Ces constantes sont utilisées avec le type de méta-annotation Target pour spécifier l’emplacement légal d’un type d’annotation.

Il existe les constantes suivantes:

  • ANNOTATION_TYPE – Déclaration de type d’annotation
  • CONSTRUCTOR – Déclaration du constructeur
  • FIELD – Déclaration sur le terrain (comprend les constantes enum)
  • LOCAL_VARIABLE – Déclaration de variable locale
  • METHODE – Déclaration de méthode
  • PACKAGE – Déclaration de package
  • PARAMETRE – Déclaration de paramètre
  • TYPE – Classe, interface (y compris le type d’annotation) ou déclaration enum

Quelqu’un peut-il expliquer ce que chacun d’eux est (où ils seraient annotés dans le code réel)?

Ceci résume les principaux:

 @CustomTypeAnnotation public class MyAnnotatedClass { @CustomFieldAnnotation private Ssortingng foo; @CustomConstructorAnnotation public MyAnnotatedClass() { } @CustomMethodAnnotation public Ssortingng bar(@CustomParameterAnnotation Ssortingng str) { @CustomLocalVariableAnnotation Ssortingng asdf = "asdf"; return asdf + str; } } 

ANNOTATION_TYPE est une annotation sur une autre annotation, comme ceci:

 @CustomAnnotationTypeAnnotation public @interface SomeAnnotation { .. } 

Le package est défini dans un fichier package-info.java dans le package, comme ceci:

 @CustomPackageLevelAnnotation package com.some.package; import com.some.package.annotation.PackageLevelAnnotation; 

Pour plus d’informations sur les annotations PACKAGE, cliquez ici et ici .

Disons que l’annotation à laquelle vous spécifiez ElementType s’appelle YourAnnotation :

  • ANNOTATION_TYPE – Déclaration de type d’annotation. Note: Cela va sur d’autres annotations

     @YourAnnotation public @interface AnotherAnnotation {..} 
  • CONSTRUCTOR – Déclaration du constructeur

     public class SomeClass { @YourAnnotation public SomeClass() {..} } 
  • FIELD – Déclaration sur le terrain (comprend les constantes enum)

     @YourAnnotation private Ssortingng someField; 
  • LOCAL_VARIABLE – Déclaration de variable locale. Note: Ceci ne peut pas être lu à l’exécution, il est donc utilisé uniquement pour les @SuppressWarnings de compilation, comme l’annotation @SuppressWarnings .

     public void someMethod() { @YourAnnotation int a = 0; } 
  • METHODE – Déclaration de méthode

     @YourAnnotation public void someMethod() {..} 
  • PACKAGE – Déclaration de package. Note: Ceci ne peut être utilisé que dans package-info.java .

     @YourAnnotation package org.yourcompany.somepackage; 
  • PARAMETRE – Déclaration de paramètre

     public void someMethod(@YourAnnotation param) {..} 
  • TYPE – Classe, interface (y compris le type d’annotation) ou déclaration enum

     @YourAnnotation public class SomeClass {..} 

Vous pouvez spécifier plusieurs éléments ElementType pour une annotation donnée. Par exemple:

 @Target({ElementType.CONSTRUCTOR, ElementType.METHOD}) 

TYPE :

Annotation:

 @Target({ElementType.TYPE}) // This annotation can only be applied to public @interface Tweezable { // class, interface, or enum declarations. } 

et un exemple d’utilisation:

 @Tweezable public class Hair { ... }