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