標籤:java annotation 註解
第17篇-JAVA Annotation 註解
每篇一句 :真的努力後你會發現自己要比想象的優秀很多
初學心得: 懷著一顆奮鬥不息的心,一切困苦艱辛自當迎刃而解
(筆者:JEEP/711)[JAVA筆記 | 時間:2017-05-17| JAVA Annotation註解 ]
1.什麼是註解(Annotation)
Annotation 其實就是代碼裡的特殊標記, 它用於替代設定檔,也就是說,傳統方式通過設定檔告訴類如何運行,有了註解技術後,開發人員可以通過註解告訴類如何運行。在Java技術裡註解的典型應用是:可以通過反射技術去得到類裡面的註解,以決定怎麼去運行類
Annotation(註解)就是Java提供了一種元程式中的元素關聯任何資訊和著任何中繼資料(metadata)的途徑和方法
Annotion(註解)是一個介面,程式可以通過反射來擷取指定程式元素的Annotion對象,然後通過Annotion對象來擷取註解裡面的中繼資料
Annotation(註解)是JDK5.0及以後版本引入的。它可以用於建立文檔,跟蹤代碼中的依賴性,甚至執行基本編譯時間檢查。從某些方面看,annotation就像修飾符一樣被使用,並應用於包、類 型、構造方法、方法、成員變數、參數、本地變數的聲明中
2.基本Annotation
1.[email protected]: 限定重寫父類方法, 該註解只能用於方法[email protected]: 用於表示某個程式元素(類, 方法等)已淘汰[email protected]: 抑制編譯器警告
3.自訂Annotation
4.提取Annotation資訊
Annotation介面來代表程式元素前面的注釋,該介面是所有Annotation類型的父介面
AnnotatedElement介面代表程式中可以接受注釋的程式元素
調用AnnotatedElement對象的如下三個方法來訪問Annotation資訊:
getAnnotation(Class annotationClass):返回該程式元素上存在的、指定類型的注釋,如果該類型的注釋不存在,則返回null
Annotation[] getAnnotations():返回該程式元素上存在的所有注釋
boolean isAnnotationPresent(Class<? extends Annotation> annotationClass):判斷該程式元素上是否包含指定類型的注釋,存在則返回true,否則返回false
5.Annotation 註解執行個體
自訂Annotation
1.import java.lang.annotation.Documented; 2.import java.lang.annotation.ElementType; 3.import java.lang.annotation.Retention; 4.import java.lang.annotation.RetentionPolicy; 5.import java.lang.annotation.Target; 6./** 7. * 定義一個註解 8. */ [email protected](ElementType.METHOD) // 這是一個對方法的註解,還可以是包、類、變數等很多東西 [email protected](RetentionPolicy.RUNTIME) // 保留時間,一般註解就是為了架構開發時代替設定檔使用,JVM運行時用反射取參數處理,所以一般都為RUNTIME類型 [email protected] // 用於描述其它類型的annotation應該被作為被標註的程式成員的公用API,因此可以被例如javadoc此類的工具文檔化 12.public @interface OneAnnotation { 13. // 定義註解的參數,類型可以為基本類型以及String、Class、enum、數組等,default為預設值 14. String parameter1() default ""; 15. int parameter2() default -1; 16.}
使用註解
1./** 2. * 一個用到了自訂的註解的類 3. */ 4.public class OClass { 5. @OneAnnotation(parameter1="YES", parameter2=10) 6. public void oneMethod () { 7. } 8.}
擷取註解參數
1.import java.lang.reflect.Method; 2.public class TestDemo { 3. public static void main(String[] args) throws Exception { 4. // 提取到被註解的方法Method,這裡用到了反射的知識 5. Method method = Class.forName("OneClass").getDeclaredMethod("oneMethod"); 6. // 從Method方法中通過方法getAnnotation獲得我們設定的註解 7. OneAnnotation oneAnnotation = method.getAnnotation(OneAnnotation.class); 8. // 得到註解的倆參數 9. System.out.println(oneAnnotation.parameter1()); 10. System.out.println(oneAnnotation.parameter2()); 11. } 12.}
初學(JAVA Annotation註解 進階階段) 痛點: ★★★★★希望每一篇文章都能夠對讀者們提供協助與提升,這乃是每一位筆者的初衷感謝您的閱讀 歡迎您的留言與建議
FaceBook:JEEP SevenEleven
Twitter:@JEEP7ll
新浪官方微博: @JEEP-711
Github部落格: https://github.com/jeep711/jeep711.github.io
Blog Garden:http://www.cnblogs.com/JEEP711/
W3C/Blog:http://www.w3cschool.cn/jeep711blog/
CSDN/Blog:http://blog.csdn.net/jeep911
51CTO/Blog:http://jeep711.blog.51cto.com/
碼云:http://git.oschina.net/JEEP711/jeep711.github.io
郵箱: [email protected],[email protected]
本文出自 “JEEP711” 部落格,請務必保留此出處http://jeep711.blog.51cto.com/12970787/1955820
第17篇-JAVA Annotation 註解