第17篇-JAVA Annotation 註解

來源:互聯網
上載者:User

標籤: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
  • 使用@interface定義Annotation

  • 使用Annotation修飾程式中的類、方法、變數、介面等定義,通常我們會把Annotation放在所有修飾符之前

  • 定義帶成員變數的Annotation

  • 為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 註解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.