@Target({ ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface SystemLog {
boolean value() default true;
}
Retention注解
Retention(保留)注解說(shuō)明,這種類型的注解會(huì)被保留到那個(gè)階段. 有三個(gè)值:
1.RetentionPolicy.SOURCE —— 這種類型的Annotations只在源代碼級(jí)別保留,編譯時(shí)就會(huì)被忽略
2.RetentionPolicy.CLASS —— 這種類型的Annotations編譯時(shí)被保留,在class文件中存在,但JVM將會(huì)忽略
3.RetentionPolicy.RUNTIME —— 這種類型的Annotations將被JVM保留,所以他們能在運(yùn)行時(shí)被JVM或其他使用反射機(jī)制的代碼所讀取和使用.
下面示例中, @Retention(RetentionPolicy.RUNTIME)注解表明 Test_Retention注解將會(huì)由虛擬機(jī)保留,以便它可以在運(yùn)行時(shí)通過(guò)反射讀取.
Documented 注解
Documented 注解表明這個(gè)注解應(yīng)該被 javadoc工具記錄. 默認(rèn)情況下,javadoc是不包括注解的. 但如果聲明注解時(shí)指定了 @Documented,則它會(huì)被 javadoc 之類的工具處理, 所以注解類型信息也會(huì)被包括在生成的文檔中.(個(gè)人觀點(diǎn):不是重點(diǎn),了解即可。勿噴)
Target注解
@Target說(shuō)明了Annotation所修飾的對(duì)象范圍:Annotation可被用于 packages、types(類、接口、枚舉、Annotation類型)、類型成員(方法、構(gòu)造方法、成員變量、枚舉值)、方法參數(shù)和本地變量(如循環(huán)變量、catch參數(shù))。在Annotation類型的聲明中使用了target可更加明晰其修飾的目標(biāo)。
作用:用于描述注解的使用范圍(即:被描述的注解可以用在什么地方)
取值(ElementType)有:
1.CONSTRUCTOR:用于描述構(gòu)造器
2.FIELD:用于描述域
3.LOCAL_VARIABLE:用于描述局部變量
4.METHOD:用于描述方法
5.PACKAGE:用于描述包
6.PARAMETER:用于描述參數(shù)
7.TYPE:用于描述類、接口(包括注解類型) 或enum聲明
Inherited 注解
這是一個(gè)稍微復(fù)雜的注解類型. 它指明被注解的類會(huì)自動(dòng)繼承. 更具體地說(shuō),如果定義注解時(shí)使用了 @Inherited 標(biāo)記,然后用定義的注解來(lái)標(biāo)注另一個(gè)父類, 父類又有一個(gè)子類(subclass),則父類的所有屬性將被繼承到它的子類中.
作者:氨基鈉
鏈接:http://www.itdecent.cn/p/8738ce6bd771
來(lái)源:簡(jiǎn)書(shū)
簡(jiǎn)書(shū)著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。