https://www.cnblogs.com/skywang12345/p/3344137.html
https://blog.csdn.net/walk_man_3/article/details/79480326
1.內(nèi)置的注解
Java 定義了一套注解蜻势,共有 7 個,3 個在 java.lang 中柑司,剩下 4 個在 java.lang.annotation 中跺讯。
作用在代碼的注解是
@Override - 檢查該方法是否是重寫方法愧旦。如果發(fā)現(xiàn)其父類,或者是引用的接口中并沒有該方法時,會報編譯錯誤摩泪。
@Deprecated - 標記過時方法。如果使用該方法忍啤,會報編譯警告加勤。
@SuppressWarnings - 指示編譯器去忽略注解中聲明的警告仙辟。
作用在其他注解的注解(或者說 元注解)是:
@Retention - 標識這個注解怎么保存,是只在代碼中鳄梅,還是編入class文件中叠国,或者是在運行時可以通過反射訪問。
@Documented - 標記這些注解是否包含在用戶文檔中戴尸。
@Target - 標記這個注解應該是哪種 Java 成員粟焊。
@Inherited - 標記這個注解是繼承于哪個注解類(默認 注解并沒有繼承于任何子類)
從 Java 7 開始,額外添加了 3 個注解:
@SafeVarargs - Java 7 開始支持孙蒙,忽略任何使用參數(shù)為泛型變量的方法或構造函數(shù)調(diào)用產(chǎn)生的警告项棠。
@FunctionalInterface - Java 8 開始支持,標識一個匿名函數(shù)或函數(shù)式接口挎峦。
@Repeatable - Java 8 開始支持香追,標識某注解可以在同一個聲明上使用多次。
2.常用注解解析
(01) @interface -- 它的用來修飾 Inherited坦胶,意味著 Inherited 實現(xiàn)了 java.lang.annotation.Annotation 接口透典;即 Inherited 就是一個注解。
(02) @Documented -- 它的作用是說明該注解能出現(xiàn)在 javadoc 中顿苇。
(03) @Retention(RetentionPolicy.RUNTIME) -- 它的作用是指定 Inherited 的策略是RetentionPolicy.RUNTIME峭咒。這就意味著,編譯器會將 Inherited 的信息保留在 .class文件中纪岁,并且能被虛擬機讀取凑队。
(04) @Target(ElementType.ANNOTATION_TYPE) -- 它的作用是指定 Inherited 的類型是 ANNOTATION_TYPE。這就意味著幔翰,@Inherited 只能被用來標注 "Annotation 類型"遭铺。
(05) @Inherited 的含義是砍的,它所標注的Annotation將具有繼承性。? //例如,用它修飾了Myannotation谣辞,Myannotation注解了Parent類妹蔽,那么Parent所有子類也即添加了Myannotation注解
(06) SuppressWarnings 的作用是材鹦,讓編譯器對"它所標注的內(nèi)容"的某些警告保持靜默碟狞。例如,"@SuppressWarnings(value={"deprecation","unchecked"})" 表示對"它所標注的內(nèi)容"中的 "SuppressWarnings不再建議使用警告"和"未檢查的轉(zhuǎn)換時的警告"保持沉默缓待。
3.Annotation 的作用
1)編譯檢查
2) 在反射中使用 Annotation
3) 根據(jù) Annotation 生成幫助文檔
通過給 Annotation 注解加上 @Documented 標簽蚓耽,能使該 Annotation 標簽出現(xiàn)在 javadoc 中。
4) 能夠幫忙查看查看代碼