生活随笔
收集整理的這篇文章主要介紹了
Annotation之补充
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
??Annotation之補充
@Inherited
表示一個Annotation能否被使用其類的子類繼續繼承下去,如果沒有寫上此注釋,則此Annotation根本就是無法繼承的。
官方解釋:指示注釋類型被自動繼承。如果在注釋類型聲明中存在 Inherited 元注釋,并且用戶在某一類聲明中查詢該注釋類型,同時該類聲明中沒有此類型的注釋,則將在該類的超類中自動查詢該注釋類型。此過程會重復進行,直到找到此類型的注釋或到達了該類層次結構的頂層 (Object) 為止。如果沒有超類具有該類型的注釋,則查詢將指示當前類沒有這樣的注釋。
具體實例
MyAnnotation
import?java.lang.annotation.Documented;?import?java.lang.annotation.ElementType;?import?java.lang.annotation.Inherited;?import?java.lang.annotation.Retention;?import?java.lang.annotation.RetentionPolicy;?import?java.lang.annotation.Target;?@Inherited?//添加此句@Target(ElementType.METHOD)?@Retention(RetentionPolicy.RUNTIME)?@Documented?public?@interface?MyAnnotation?{?public?String?name()?default?"singsong";?}? ?
在Person類中使用Annotation
public?class?Person?{?????@MyAnnotation(name?=?"The?person's?name?is?singsong")?????public?void?getName()?{?????}?????}? ?Students類繼承Person類
public?class?Students?extends?Person?{??}? 使用反射機制來實現Students類繼承的注釋
import?java.lang.reflect.Method;?public?class?TestMyAnnotation?{?????public?static?void?main(String[]?args)?throws?Exception?{?????????Class<?>?c=Students.class;?????????Method?method=c.getMethod("getName");?????????MyAnnotation?myAnnotation?=?method.getAnnotation(MyAnnotation.class);?????????System.out.println(myAnnotation.name());?????}?}? 運行結果:
The person's name is singsong
?
?
?
?
轉載于:https://blog.51cto.com/singsong/1161736
總結
以上是生活随笔為你收集整理的Annotation之补充的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。