1.先看原始碼文件
@已記錄
#@Retention(保留策略。RUNTIME)
@Target(ElementType。註釋類型)
public@interfaceInherited{
}以上程式碼標註部分可以用Google翻譯。大致意思是
指示批註類型的自動繼承。如果在標註類型聲明中有繼承的元標註,使用者在類別聲明上查詢標註類型,而類別聲明沒有這個類型的標註,那麼類別的超類別會自動查詢標註類型。這個過程將重複進行,直到找到這種類型的註解或到達類別層次結構的頂部。如果沒有一個超類別有這種類型的註釋,查詢將會指出這個類別沒有這樣的註釋。
請注意,如果您使用註解類型來註解除類別之外的任何東西,這種元註解類型沒有任何效果。也要注意,這個元註解只會導致從超類別繼承註解;對已實作介面的無效註解。
從上面的描述可以看出,使用這個標註的標註父類別的子類別可以繼承父類別的標註。
2.程式碼測試
2.1擁有@Inherited註解
@Target(ElementType.型別)
@Retention(保留策略。RUNTIME)
##@繼承public @ interfaceInheritedTest {string value();}@InheritedTest('擁有繼承')publicclassPerson{publicvoidmethod(){}publicvoidmethod2(){#}} publicclassstudentextends person {}測試:publicclassTestInherited{public static void main(String[]args){SS 。 value());}}}輸出: ##2.2沒有@Inherited註解@Target(ElementType。類型)@Retention(保留策略。RUNTIME)public @ interfacesinotinherited {
#string value();
##} @ IsNotInherited('未擁有繼承')
publicclassPerson{
#publicvoidmethod(){
}
publicvoidmethod2(){
}
} publicclassstudentextends person {
}測試:
publicclassTestInherited{
public static void main(String[]args){
public static void main(String[]args){#public static void main(String[]args){
##CLaSS studentCLaSS=student . class;
if(StudentClass . is notationPresent(iSnotinerIded .
if(StudentClass . is notationPresent(iSnotinerIded .if(StudentClass . is notationPresent(iSnotinerIded . Class)){
##Ann#cm. out .Class .Stuip. )。 value());}}}#不輸出容差,可見沒有@Inherited標註的類別的子類不會繼承該標註。
以上是如何在java專案中使用@Inherited元註解的詳細內容。更多資訊請關注PHP中文網其他相關文章!