1. Qu'est-ce qu'une annotation en double ?
Permet plusieurs utilisations de la même annotation sur le même type déclaré (classe, propriété ou méthode)
2. Un exemple simple
Avant Java 8, il existait aussi des solutions pour réutiliser les annotations, mais la lisibilité n'était pas très bonne, comme le code suivant :
Copiez le code comme suit :
public @interface Autorité {
Rôle de chaîne();
}
Autorités publiques @interface {
Valeur d'autorité[]();
}
classe publique RepeatAnnotationUseOldVersion {
@Authorities({@Authority(role="Admin"),@Authority(role="Manager")})
public void doSomeThing(){
}
}
Utilisez une autre annotation pour stocker les annotations répétées. Lorsque vous l'utilisez, utilisez les autorités d'annotation de stockage pour étendre les annotations répétées. Jetons un coup d'œil à l'approche dans Java 8 :
Copiez le code comme suit :
@Répétable (Autorités.class)
public @interface Autorité {
Rôle de chaîne();
}
Autorités publiques @interface {
Valeur d'autorité[]();
}
classe publique RepeatAnnotationUseNewVersion {
@Autorité(role="Admin")
@Authority(role="Manager")
public void doSomeThing(){ }
}
La différence est que lors de la création de l'autorité d'annotation répétée, ajoutez @Repeatable pour pointer vers les autorités d'annotation stockées. Lors de son utilisation, l'annotation d'autorité peut être réutilisée directement. À partir de l’exemple ci-dessus, nous pouvons voir que l’approche de Java 8 est plus adaptée à la pensée conventionnelle et plus lisible.
3. Résumé
JEP120 n'a pas beaucoup de contenu, c'est une petite fonctionnalité juste pour améliorer la lisibilité du code. Cette fois, Java 8 a apporté deux améliorations aux annotations (JEP 104, JEP120, je pense que les annotations seront utilisées plus fréquemment qu'auparavant).