Maison  >  Article  >  Java  >  Comment utiliser la méta-annotation @Inherited dans un projet Java

Comment utiliser la méta-annotation @Inherited dans un projet Java

王林
王林avant
2023-05-10 13:34:06900parcourir

1. Lisez d'abord le document source

@Recorded

@Retention(Retention Policy. RUNTIME)

@Target(ElementType. Annotation Type)

public@interfaceInherited{

}Vous pouvez utiliser Google pour ce qui précède traduction de la partie d'annotation de code. La signification approximative est que

indique l'héritage automatique des types d'annotations. S'il existe une méta-annotation héritée dans la déclaration du type d'annotation et que l'utilisateur interroge le type d'annotation sur la déclaration de classe et que la déclaration de classe n'a pas d'annotation de ce type, la superclasse de la classe interrogera automatiquement le type d'annotation . Ce processus sera répété jusqu'à ce qu'une annotation de ce type soit trouvée ou que le sommet de la hiérarchie des classes soit atteint. Si aucune des superclasses ne possède ce type d’annotation, la requête indiquera que la classe ne possède pas une telle annotation.

Veuillez noter que ce type de méta-annotation n'a aucun effet si vous l'utilisez pour annoter autre chose que des classes. Notez également que cette méta-annotation entraîne uniquement des annotations héritées de la superclasse ; des annotations invalides sur les interfaces implémentées.

Comme le montre la description ci-dessus, les sous-classes de la classe parent d'annotation utilisant cette annotation peuvent hériter de l'annotation de la classe parent.

2. Test de code

2.1 a une annotation @Inherited

@Target(ElementType.Type)

@Retention(Retention Policy.RUNTIME)

@Inheritance

public @ interfaceInheritedTest {

valeur de chaîne ();

}@InheritedTest('a un héritage')

publicclassPerson{

publicvoidmethod(){

}

publicvoidmethod2(){

}

} publicclassstudentextends person {

}Test :

publicclassTestInherited {LPublic Static Void Main (String [] Args) {

Class StudentClass = Student Class;

IF (Student Class. Is NotationPRESNT (Inherited Test. Class)) {

System Out. StudentClass. GetAnnotation (InheritedTest . Class)). value());

}

}

} Sortie : Comment utiliser la méta-annotation @Inherited dans un projet Java

2.2 sans annotation @Inherited

@Target(ElementType. Type)

@Retention(Retention Policy. RUNTIME)

public @interfacesinotinher cité {

string value();

} @IsNotInherited('Notowned')

publicclassPerson{

publicvoidmethod(){

}

publicvoidmethod2(){

}

} publicclassstudentextends person {

} Test :

publicclassTestInherited{

public static void main(String[]args){

CLaSS studentCLaSS=student .

if(StudentClass . is notationPresent(iSnotinerIded . Class)){

system println . (StudentClass . GetAnnotation (iSNOTiHerided . class)). value());

}

}Comment utiliser la méta-annotation @Inherited dans un projet Java

}

🎜 n'affiche pas la tolérance. On peut voir que les sous-classes des classes sans l'annotation @Inherited n'hériteront pas de cette annotation. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer