1. Lesen Sie zuerst das Quelldokument. 🎜🎜#@Target(ElementType. Annotation Type)
public@interfaceInherited{} Der obige Codeanmerkungsteil kann mit Google übersetzt werden. Die grobe Bedeutung ist und gibt die automatische Vererbung von Anmerkungstypen an. Wenn die Annotationstypdeklaration eine geerbte Metaanmerkung enthält und der Benutzer den Annotationstyp in der Klassendeklaration abfragt und die Klassendeklaration keine Annotation dieses Typs enthält, fragt die Oberklasse der Klasse automatisch den Annotationstyp ab . Dieser Vorgang wird wiederholt, bis eine Annotation dieses Typs gefunden wird oder die Spitze der Klassenhierarchie erreicht wird. Wenn keine der Superklassen über diese Art von Annotation verfügt, zeigt die Abfrage an, dass die Klasse über keine solche Annotation verfügt. Bitte beachten Sie, dass dieser Meta-Annotationstyp keine Auswirkung hat, wenn Sie Annotationstypen verwenden, um etwas anderes als Klassen zu kommentieren. Beachten Sie außerdem, dass diese Metaanmerkung nur zu geerbten Anmerkungen von der Oberklasse führt; Wie aus der obigen Beschreibung ersichtlich ist, können Unterklassen der übergeordneten Annotationsklasse, die diese Annotation verwenden, die Annotation der übergeordneten Klasse erben. #? Target(ElementType.Type)@Retention(Retention Policy.RUNTIME)@Inheritancepublic @ interfaceInheritedTest {#🎜 🎜#string value();
}@InheritedTest('has inheritance')publicclassPerson{
publicvoidmethod(){ }
publicvoidmethod2(){
}
} publicclassstudentextends person {
}Test: # 🎜🎜#
publicclassTestInherited{public static void main(String[]args){CLaSS studentCLaSS=student .class;# 🎜🎜 #if(student class . is notationpresent(inherited test . class)){
system out .StudentClass . GetAnnotation(InheritedTest . Class)). value ()); 🎜🎜#public @ interfacesinotinherited {
string value();
} @ IsNotInherited('Notowned inheritance')
publicclassPerson{#🎜 🎜##🎜🎜 #publicvoidmethod(){
}
publicvoidmethod2(){
}
} publicclassstudentextends Person {#🎜 🎜 #
}Test: publicclassTestInherited{public static void main(String[]args){ CLASS studentCLaSS=student . class; if(StudentClass . is notationPresent(iSnotinerIded . Class)) ). value());}}}
Toleranz wird nicht ausgegeben, sichtbar Unterklassen einer Klasse ohne die Annotation @Inherited erben diese Annotation nicht.Das obige ist der detaillierte Inhalt vonSo verwenden Sie die @Inherited-Meta-Annotation in einem Java-Projekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!