Java的注解是Java中非常好用的一個(gè)功能點(diǎn)?;舅械膉ava框架都會用到。在我們?nèi)粘5墓ぷ髦?,如果善于使用自定義注解,講給我們節(jié)省下大量的時(shí)間。
代碼示例:
import java.lang.annotation.documented;import java.lang.annotation.ElementType;import java.lang.annotation.Inherited;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.lang.annotation.Target;documentedTarget(ElementType.METHOD)InheritedRetention(RetentionPolicy.RUNTIME)public interface MyDemo{String author()default'yunsheng';}
對自定義注解進(jìn)行注解的稱為元注解。常用的元注解有四類:
documented:表明此注解會被javadoc等類似工具識別,并保留在API文檔中。
Target:聲明這個(gè)注解可使用的范圍??梢源蜷_ElementType看下,分別是:1)類,接口,注解,enum;2)屬性域;3)方法;4)參數(shù);5)構(gòu)造函數(shù);6)局部變量;7)注解類型;8)包
Inherited:繼承。是說如果你在父類上使用了被 Inherited注解的注解A。那么該類的子類也會繼承該注解A。
Retention:注解的存在范圍。
有三個(gè)范圍:
RetentionPolicy.SOURCE只存在源碼級別,被編譯器拋棄( Override就是此類);
RetentionPolicy.CLASS會被編譯器保留在編譯后的類文件中,但是會被虛擬機(jī)丟棄;
RetentionPolicy.RUNTIME保留在運(yùn)行時(shí),可以被反射讀取。這個(gè)注解還是比較重要的,我們一般是會使用RUNTIME級別,因?yàn)槲覀冃枰ㄟ^反射讀取到這個(gè)注解。
使用:
使用起來其實(shí)很簡單,就是通過反射拿到注解信息。
如:Method的幾個(gè)方法:
isAnnotationPresent(xx.xx.class):方法判斷是否使用了xx注解
getAnnotation(xx.class):獲取具體的注解對象實(shí)例
getDeclaredAnnotations():獲取所有注解,注意反射方法中Declared都是獲取自身的,不包括繼承來的。
getAnnotations():獲取包括繼承來的注解。這里就要看父類的注解是否是可繼承的了。
以上就是北大青鳥長沙麓谷校區(qū)java培訓(xùn)機(jī)構(gòu)的小編針對“初學(xué)者學(xué)會使用Java自動(dòng)注釋”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。