註解和反射的簡單學習

之前對於這兩個概念其實沒有多少認識,只知道註解是標記,對於反射的印象就是類比於遊戲進度的回顯吧,慚愧慚愧~~~學習後有了一些更深刻的瞭解,記錄一下,加深印象。java

註解(Annotation)

  1. 什麼是註解?

    是 JDK5.0 引入的一種註釋機制,代碼輔助工具,由內置註解和元註解組成。核心做用是對類、方法、變量、參數和包進行標註,經過反射來訪問標註信息,以此在運行中改變標註對象的行爲。
  2. 內置註解

    @Override(重寫方法):被用於標註方法,用於說明所標註的方法是重寫父類的方法安全

    @Deprecated(過期方法):用於說明所標註元素,因存在安全問題或有更好選擇而不鼓勵使用,若是強行使用,則編譯器會發出警告編輯器

    @SuppressWarnings(消除警告):用於取消編輯器所顯示的警告,有以下屬性值ide

    @SafeVarargs(消除泛型警告) : Java 7 開始支持,忽略任何使用參數爲泛型變量的方法或構造函數調用產生的警告函數

    @FunctionalInterface (標記函數): Java 8 開始支持,標識一個匿名函數或函數式接口工具

    @Repeatable(屢次聲明) : Java 8 開始支持,標識某註解能夠在同一個聲明上使用屢次性能

  3. 元註解:java提供了四個用於修飾自定義註解的元註解

    @Target:用於指定被修飾的自定義註解只能用於修飾程序中哪些元素學習

         ElemenetType.CONSTRUCTOR:構造器聲明       
         ElemenetType.LOCAL_VARIABLE:局部變量聲明      
         ElemenetType.PACKAGE:包聲明 
         ElemenetType.PARAMETER :參數聲明 
         ElemenetType.METHOD :方法聲明 
         ElemenetType.FIELD:全局屬性聲明(包括 enum 實例)
         ElemenetType.TYPE:類,接口(包括註解類型)或enum聲明 編碼

    @Retention:用於指定被修飾的自定義註解能夠保留多久,有三個經常使用屬性
        RetentionPolicy.SOURCE:在源文件中有效(即源文件保留)
        RetentionPolicy.CLASS:在class文件中有效(即class保留)
        RetentionPolicy.RUNTIME:在運行時有效(即運行時保留)   spa

    @Documented:執行javadoc命令時,被該元註解修飾的自定義註解也會生成在文檔中

    @Inherited:若是父類所使用的註解有此修飾,則子類能夠繼承該註解,不然不能

  4. 自定義註解實例

    1 @Target({ElementType.FIELD,ElementType.TYPE})//可修飾屬性和類
    2 @Retention(RetentionPolicy.RUNTIME)//運行時
    3 public @interface RefStudy {
    4 
    5     String name() default "a";
    6     String[] mores();
    7 }

 

反射(reflection) 

  1.  反射是什麼?
    運行過程當中,對於任意類,都能知道類的全部屬性和方法;對弈任意對象,都能調用它的方法和屬性。這種動態獲取的信息以及動態調用對象的方法的功能稱爲Java語言的反射。
  2. 反射的優缺點
    • 反射提升了程序的靈活性和擴展性,下降耦合性,提升自適應能力
    • 它容許程序建立和控制任何類的對象,無需提早硬編碼目標類
    • 反射會對性能形成必定的影響,同時讓代碼的可讀性變低
  3. 經常使用方法
    方法名 返回值 參數描述
    Class.forName(String) 類的元信息 類文件的具體位置
    類.getClass() 類的元信息  
    clz.getDeclaredFields() 類中的全部屬性  
    getMethods() 類的全部方法  
    invoke(obj) 經過反射執行方法 類的元信息
    getAnnotation(class) 註解 類的Class
    setAccessible(true) 設置當前屬性爲可見 true或者false
    clz.newInstance() 類的實例對象
相關文章
相關標籤/搜索