元注解
元注解的作用就是負(fù)責(zé)注解其他注解。
1.@Target
2.@Retention
3.@Documented
4.@Inherited
@Target:
@Target說明了Annotation所修飾的對象范圍:Annotation可被用于 packages、types(類、接口、枚舉、Annotation類型)、類型成員(方法、構(gòu)造方法、成員變量、枚舉值)、方法參數(shù)和本地變量(如循環(huán)變量、catch參數(shù))。在Annotation類型的聲明中使用了target可更加明晰其修飾的目標(biāo)。
@Retention
@Retention注解是指示注釋類型的注釋要保留多久。
1.RetentionPolicy.SOURCE —— 這種類型的Annotations只在源代碼級別保留,編譯時(shí)就會被忽略
2.RetentionPolicy.CLASS —— 這種類型的Annotations編譯時(shí)被保留,在class文件中存在,但JVM將會忽略
3.RetentionPolicy.RUNTIME —— 這種類型的Annotations將被JVM保留,所以他們能在運(yùn)行時(shí)被JVM或其他使用反射機(jī)制的代碼所讀取和使用.
@Documented
@Documented是描述其它類型的annotation應(yīng)該被作為被標(biāo)注的程序成員的公共API
@Inherited
@Inherited 元注解是一個(gè)標(biāo)記注解,@Inherited闡述了某個(gè)被標(biāo)注的類型是被繼承的。如果一個(gè)使用了@Inherited修飾的annotation類型被用于一個(gè)class,則這個(gè)annotation將被用于該class的子類。
自定義注解
自定義注解格式:public @interface 注解名 {定義體}
@interface繼承了java.lang.annotation.Annotation接口在定義注解時(shí),不能繼承其他的注解或接口。@interface用來聲明一個(gè)注解,其中的每一個(gè)方法實(shí)際上是聲明了一個(gè)配置參數(shù)。方法的名稱就是參數(shù)的名稱,返回值類型就是參數(shù)的類型(返回值類型只能是基本類型、Class、String、enum)。可以通過default來聲明參數(shù)的默認(rèn)值。