-Si @interface est ajouté, il sera défini comme une annotation.
--Déclaration de paramètres lors de l'utilisation d'annotations
TestAnnotation.java
public @interface TestAnnotation {
    String param1();
    String param2() default "defaultValue";
}
UserAnnotation.java
@TestAnnotation (param1="30", param2="100")
public UserAnnotation() {}
Classe de référence
    Class<?> c = UserAnnotation.class;
    for (Annotation a : c.getDeclaredAnnotations()) {
        System.out.println(a);
    }
Sortie de la console
@com.example.demo.com.annotation.TestAnnotation(param2=100, param1=30)
TestAnnotation
@Documented
@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation{}
--Annotation attachée à une annotation.
@Documented --Soit pour inclure une description de l'annotation dans Javadoc.
@Target --Définissez l'emplacement de l'annotation.
| type | La description | 
|---|---|
| TYPE | Interface de classe, énumération, annotation | 
| FIELD | champ | 
| METHOD | Méthode | 
| ANNOTATION_TYPE | Déclaration de type annotée | 
@Retantion ―― Dans quelle mesure les informations d'annotation seront-elles utilisées?
| type | La description | 
|---|---|
| SOURCE | Il est conservé uniquement sur la source et supprimé lors de la création du fichier de classe. | 
| CLASS | Il peut être conservé dans un fichier de classe, mais ne peut pas être référencé lorsque l'application est exécutée. | 
| RUNTIME | Peut être utilisé même lorsque l'application est exécutée. Ceci est nécessaire si vous souhaitez faire référence à l'annotation en réflexion.  | 
@Inherited --Ajoutez des informations d'annotation à la sous-classe qui déclare la classe.
@Comportement documenté https://qiita.com/opengl-8080/items/1cc996d9e8bb5c811567
Qu'est-ce que la @ meta-annotation? https://www.techscore.com/tech/Java/JavaSE/JavaLanguage/7-3/
Recommended Posts