注解的作用:
1) 編寫文檔:通過代碼里標(biāo)識(shí)的元數(shù)據(jù)生成文檔
2)代碼分析:通過代碼里標(biāo)識(shí)的元數(shù)據(jù)對(duì)代碼進(jìn)行分析
3)編譯檢查:通過代碼里標(biāo)識(shí)的元數(shù)據(jù)讓編譯器能實(shí)現(xiàn)基本的編譯檢查
元注解:
元注解:
java.lang.annotation提供了四種元注解哑诊,專門注解其他的注解(在自定義注解的時(shí)候,需要使用到元注解):
@Documented –注解是否將包含在JavaDoc中
@Retention –什么時(shí)候使用該注解
@Target –注解用于什么地方
@Inherited – 是否允許子類繼承該注解
1.)@Retention– 定義該注解的生命周期
● RetentionPolicy.SOURCE : 在編譯階段丟棄及刻。這些注解在編譯結(jié)束之后就不再有任何意義镀裤,所以它們不會(huì)寫入字節(jié)碼竞阐。@Override, @SuppressWarnings都屬于這類注解。
● RetentionPolicy.CLASS : 在類加載的時(shí)候丟棄暑劝。在字節(jié)碼文件的處理中有用骆莹。注解默認(rèn)使用這種方式
● RetentionPolicy.RUNTIME : 始終不會(huì)丟棄,運(yùn)行期也保留該注解铃岔,因此可以使用反射機(jī)制讀取該注解的信息汪疮。我們自定義的注解通常使用這種方式。
2.)Target – 表示該注解用于什么地方毁习。默認(rèn)值為任何元素智嚷,表示該注解用于什么地方》那遥可用的ElementType參數(shù)包括
● ElementType.CONSTRUCTOR:用于描述構(gòu)造器
● ElementType.FIELD:成員變量盏道、對(duì)象、屬性(包括enum實(shí)例)
● ElementType.LOCAL_VARIABLE:用于描述局部變量
● ElementType.METHOD:用于描述方法
● ElementType.PACKAGE:用于描述包
● ElementType.PARAMETER:用于描述參數(shù)
● ElementType.TYPE:用于描述類载碌、接口(包括注解類型) 或enum聲明
3.)@Documented–一個(gè)簡(jiǎn)單的Annotations標(biāo)記注解猜嘱,表示是否將注解信息添加在java文檔中。
4.)@Inherited – 定義該注釋和子類的關(guān)系
@Inherited 元注解是一個(gè)標(biāo)記注解嫁艇,@Inherited闡述了某個(gè)被標(biāo)注的類型是被繼承的朗伶。如果一個(gè)使用了@Inherited修飾的annotation類型被用于一個(gè)class,則這個(gè)annotation將被用于該class的子類步咪。