@Target:表示注解可以用在什么地方,由ElementType枚舉定義
| 參數(shù) | 含義 |
|---|---|
| CONSTRUCTOR | 構(gòu)造器 |
| field | 域聲明(包括enum實(shí)例) |
| local_variable | 局部變量聲明 |
| method | 方法參數(shù) |
| package | 包聲明 |
| parameter | 參數(shù)聲明 |
| type | 類,接口或enum |
| annotation_type | 應(yīng)用于另一個(gè)注解 |
| type_parameter | 類型參數(shù)聲明(1.8新加入) |
| type_use | 類型使用聲明(1.8加入) |
@Retention表示需要在什么級(jí)別保存該注解信息
| 參數(shù) | 含義 |
|---|---|
| source | 注解將被編譯器丟棄(只會(huì)保留在源碼里) |
| class | 注解在class文件中可用,但是會(huì)被vm丟棄 |
| runtime | vm將在運(yùn)行期間也保存注解,可用通過(guò)反射獲取注解的信息 |
apt在編譯時(shí)自動(dòng)查找所有繼承自
AbstractProcessor的類,然后調(diào)用他們的process方法去處理
@Documented表示注解會(huì)被包含在javaapi文檔里
@Inherited允許子類繼承父類注解
注解元素
注解可用的類型有:
1.所有的基本類型(int,float,boolean,byte,double,char,long,short)
2.string
3.Class
4.enum
5.Annotation
元素的修飾符只能是public或者default
獲取注解
1.類注解使用getAnnotation方法
2.方法注解Method.getAnnotation()
3.參數(shù)注解Method.getParameterAnnotations();返回二維數(shù)組
4.變量注解Field.getAnnotation()