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 la méta-annotation Target
type pour spécifier où il est légal d'utiliser un type d'annotation.
Il existe les constantes suivantes:
Quelqu'un peut-il expliquer ce que chacun d'eux sont (où ils seraient annotés dans le code réel)?
Ceci résume les principaux:
@CustomTypeAnnotation
public class MyAnnotatedClass {
@CustomFieldAnnotation
private String foo;
@CustomConstructorAnnotation
public MyAnnotatedClass() {
}
@CustomMethodAnnotation
public String bar(@CustomParameterAnnotation String str) {
@CustomLocalVariableAnnotation String 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 package-info.Java
fichier dans le package, comme ceci:
@CustomPackageLevelAnnotation
package com.some.package;
import com.some.package.annotation.PackageLevelAnnotation;
Pour plus d'informations sur les annotations PACKAGE, voir ici et ici .
Disons que l'annotation à laquelle vous spécifiez le ElementType
s'appelle YourAnnotation
:
ANNOTATION_TYPE - Déclaration de type d'annotation. Remarque: Cela va sur d'autres annotations
@YourAnnotation
public @interface AnotherAnnotation {..}
CONSTRUCTOR - Déclaration du constructeur
public class SomeClass {
@YourAnnotation
public SomeClass() {..}
}
FIELD - Déclaration de champ (inclut les constantes d'énumération)
@YourAnnotation
private String someField;
LOCAL_VARIABLE - Déclaration de variable locale. Remarque: Ceci ne peut pas être lu au moment de l'exécution, il n'est donc utilisé que pour les choses à la compilation, comme le @SuppressWarnings
annotation.
public void someMethod() {
@YourAnnotation int a = 0;
}
METHOD - Déclaration de méthode
@YourAnnotation
public void someMethod() {..}
PACKAGE - Déclaration de package. Remarque: Ceci ne peut être utilisé que dans package-info.Java
.
@YourAnnotation
package org.yourcompany.somepackage;
PARAMETER - Déclaration de paramètre
public void someMethod(@YourAnnotation param) {..}
TYPE - Classe, interface (y compris le type d'annotation) ou déclaration d'énumération
@YourAnnotation
public class SomeClass {..}
Vous pouvez spécifier plusieurs ElementType
pour une annotation donnée. Par exemple.:
@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})
TAPEZ :
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 {
...
}