注解作用
注解其實是代碼裡的特殊标記,這些标記可以在編譯、類加載、運作時被讀取,并執行相應的處理。通過使用 Annotation, 程式開發人員可以在不改變原有邏輯的情況下,在源檔案嵌入一些補充資訊。代碼分析工具、開發工具和部署工具可以通過這些補充資訊進行驗證或者進行部署。
java中常見的三個注解
- @Override : 聲明該方法是從父類或接口上繼承過來的,執行編譯期的檢查
- @SuppressWarnings : 抑制編譯器警告 值有好多,隻需要知道一個 all 抑制所有的警告
- @Deprecated : 聲明 該方法不贊成使用(方法過時提示)
注解屬性:
注解本質上就是一個接口,接口中有常量和抽象方法
抽象方法在注解中就被稱為注解屬性(注解中定義時不需要定義通路權限)
注解屬性類型:
- 基本類型
- String
- Class
- Annotation
- Enum
- 以上類型對應的一維數組
注解有屬性的話調用者必須要将給屬性指派(除非這個注解屬性有預設值)
格式: @注解名(屬性=屬性值)
若注解類型為數組,且隻有一個值的時候,可以有兩種寫法
方式1: 屬性={值1}
方式2: 屬性=值1
若屬性名為value的時候,且隻需要為這個value屬性指派的時候,value可以省略
定義注解:
調用注解:
元注解
定義在注解上的注解
@Target 規定注解作用在什麼上面
值為ElementType的枚舉值
- TYPE:作用在類 接口 等上面
- METHOD:作用方法上面
- FIELD:作用字段上面
使用Target
Target源碼
使用Target定義注解
調用
@Retention 規定注解保留到什麼階段
值為RetentionPolicy的三個枚舉值
- SOURCE:隻在代碼中保留,在位元組碼檔案中就删除了(預設)
- CLASS:在代碼和位元組碼檔案中保留
- RUNTIME:所有階段都保留
實作junit包的@Test單元測試功能
需要單元測試的類
自定義注解
主方法類