JDK1.9-註解

  • 2019 年 12 月 11 日
  • 筆記

版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。

本文鏈接:https://blog.csdn.net/weixin_42528266/article/details/103381004

註解:

  • 概念:說明程式的。給電腦看的
  • 注釋:用文字描述程式的。給程式設計師看的
  • 定義:註解(Annotation),也叫元數據。一種程式碼級別的說明。它是JDK1.5及以後版本引入的一個特性,與類、介面、枚舉是在同一個層次。它可以聲明在包、類、欄位、方法、局部變數、方法參數等的前面,用來對這些元素進行說明,注釋。
  • 概念描述:
    • JDK1.5之後的新特性
    • 說明程式的
    • 使用註解:@註解名稱
  • 作用分類: ①編寫文檔:通過程式碼里標識的註解生成文檔【生成文檔doc文檔】 ②程式碼分析:通過程式碼里標識的註解對程式碼進行分析【使用反射】 ③編譯檢查:通過程式碼里標識的註解讓編譯器能夠實現基本的編譯檢查【Override】
  • JDK中預定義的一些註解
    • @Override :檢測被該註解標註的方法是否是繼承自父類(介面)的
    • @Deprecated:該註解標註的內容,表示已過時
    • @SuppressWarnings:壓制警告
      • 一般傳遞參數all @SuppressWarnings(「all」)
  • 自定義註解
    • 格式: 元註解 public @interface 註解名稱{ 屬性列表; }
    • 本質:註解本質上就是一個介面,該介面默認繼承Annotation介面
      • public interface MyAnno extends java.lang.annotation.Annotation {}
    • 屬性:介面中的抽象方法
      • 要求:
        1. 屬性的返回值類型有下列取值
          • 基本數據類型
          • String
          • 枚舉
          • 註解
          • 以上類型的數組
        2. 定義了屬性,在使用時需要給屬性賦值
          1. 如果定義屬性時,使用default關鍵字給屬性默認初始化值,則使用註解時,可以不進行屬性的賦值。
          2. 如果只有一個屬性需要賦值,並且屬性的名稱是value,則value可以省略,直接定義值即可。
          3. 數組賦值時,值使用{}包裹。如果數組中只有一個值,則{}可以省略
    • 元註解:用於描述註解的註解
      • @Target:描述註解能夠作用的位置
        • ElementType取值:
          • TYPE:可以作用於類上
          • METHOD:可以作用於方法上
          • FIELD:可以作用於成員變數上
      • @Retention:描述註解被保留的階段
        • @Retention(RetentionPolicy.RUNTIME):當前被描述的註解,會保留到class位元組碼文件中,並被JVM讀取到
      • @Documented:描述註解是否被抽取到api文檔中
      • @Inherited:描述註解是否被子類繼承
  • 在程式使用(解析)註解:獲取註解中定義的屬性值
    1. 獲取註解定義的位置的對象 (Class,Method,Field)
    2. 獲取指定的註解
      • getAnnotation(Class) //其實就是在記憶體中生成了一個該註解介面的子類實現對象 public class ProImpl implements Pro{ public String className(){ return "cn.itcast.annotation.Demo1"; } public String methodName(){ return "show"; } }
    3. 調用註解中的抽象方法獲取配置的屬性值
  • 案例:簡單的測試框架
  • 小結:
    1. 以後大多數時候,我們會使用註解,而不是自定義註解
    2. 註解給誰用?
      1. 編譯器
      2. 給解析程式用
    3. 註解不是程式的一部分,可以理解為註解就是一個標籤