java基礎加強之註解的應用
## 註解:
* 概念:說明程序的。給計算機看的
* 註釋:用文字描述程序的。給程序員看的
* 定義:註解(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. 調用註解中的抽象方法獲取配置的屬性值
實例:
註解解析,用註解代替配置文件,解析註解信息
準備:測試運行類,測試類,自定義註解
測試類Demo1和Demo2
自定義註解:
測試運行類:
* 案例:簡單的測試框架
聲明:使用註解測試Caculator類
準備:
簡單的計算器類,check註解,註解測試類
計算器類:
check註解
測試運行類
運行結果:
* 小結:
1. 以後大多數時候,我們會使用註解,而不是自定義註解
2. 註解給誰用?
1. 編譯器
2. 給解析程序用
3. 註解不是程序的一部分,可以理解爲註解就是一個標籤