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 {}
- 屬性:介面中的抽象方法
- 要求:
- 屬性的返回值類型有下列取值
- 基本數據類型
- String
- 枚舉
- 註解
- 以上類型的數組
- 定義了屬性,在使用時需要給屬性賦值
- 如果定義屬性時,使用default關鍵字給屬性默認初始化值,則使用註解時,可以不進行屬性的賦值。
- 如果只有一個屬性需要賦值,並且屬性的名稱是value,則value可以省略,直接定義值即可。
- 數組賦值時,值使用{}包裹。如果數組中只有一個值,則{}可以省略
- 屬性的返回值類型有下列取值
- 要求:
- 元註解:用於描述註解的註解
- @Target:描述註解能夠作用的位置
- ElementType取值:
- TYPE:可以作用於類上
- METHOD:可以作用於方法上
- FIELD:可以作用於成員變數上
- ElementType取值:
- @Retention:描述註解被保留的階段
- @Retention(RetentionPolicy.RUNTIME):當前被描述的註解,會保留到class位元組碼文件中,並被JVM讀取到
- @Documented:描述註解是否被抽取到api文檔中
- @Inherited:描述註解是否被子類繼承
- @Target:描述註解能夠作用的位置
- 在程式使用(解析)註解:獲取註解中定義的屬性值
- 獲取註解定義的位置的對象 (Class,Method,Field)
- 獲取指定的註解
- getAnnotation(Class) //其實就是在記憶體中生成了一個該註解介面的子類實現對象 public class ProImpl implements Pro{ public String className(){ return "cn.itcast.annotation.Demo1"; } public String methodName(){ return "show"; } }
- 調用註解中的抽象方法獲取配置的屬性值
- 案例:簡單的測試框架
- 小結:
- 以後大多數時候,我們會使用註解,而不是自定義註解
- 註解給誰用?
- 編譯器
- 給解析程式用
- 註解不是程式的一部分,可以理解為註解就是一個標籤