Annotation(註解)是 JDK 5中引入的機制,註解使得Java源代碼中不但可以包含功能性的實現代碼,還可以添加元數據。註解的功能類似於代碼中的註釋,所不同的是註解不是提供代碼功能的說明,而是實現程序功能的重要組成部分。Java註解已經在很多框架中得到了廣泛的使用,用來簡化程序中的配置。
註解相當於一種標記,在程序中加了註解就等於爲程序打了某種標記,以後,javac編譯器,開發工具和其他程序可以用反射來了解你的類及各種元素上有無何種標記,去幹相應的事。標記可以加在包,類,字段,方法的參數已經局部變量上。
jdk自帶的三個註解:@SuppressWarnings(去除警告) @Deprecated(添加警告) @Override(提示覆蓋)
註解就相當於一個源程序中要調用的一個類,要應用某個註解,必須現有該註解類。
註解的定義與調用
定義:MyAnnotation.java
調用:AnnotationTest.Java
默認時編譯器在編譯時會去掉註解,所以我們要在註解類中再添加註解讓編譯器知道這個註解類要保留到運行時
@Retention元註解,設置註釋可以保留到哪個階段,有三種取值:
RetetionPolicy.SOURCRE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME;分別對應:java源文件->class文件->內存中的字節碼,分別代表註解的生命週期。自定義註釋默認值是保留到class階段。
其他:
@SuppressWarnings(SOURCRE階段) @Deprecated(RUNTIMR階段)
@Override(SOURCRE階段)
@Target設置註釋能夠加到什麼類型身上:
@Target({ElementType.METHOD,ElementType.TYPE}),ElementType.TYPE中的TYPE是class、enum等的更高層次即父類
爲註解增加各種屬性
應用:
@ MyAnnotation (annotationAttr=@MetaAnnotation("flx"),color="red",value="abc",arrayAttr=1)
class AnnotationTest{}
調用: