17.12.28
注解译荞,我的理解秕岛,在源碼期、編譯期、運行期尿褪,對被注解的代碼段的標(biāo)識旁壮。使得底層程序?qū)Ρ粯?biāo)識代碼段進行特殊處理脐雪。
注釋是給人看的付翁。注解是給底層系統(tǒng)看的,注解是描述代碼的代碼贮缅,注解能夠被編譯器解析榨咐,注解處理工具在運行時也能解析注解。
——————————————
元注解:注解的注解谴供。負責(zé)注解其他注解块茁。有4個。
1.@Target,說明了Annotation所修飾的對象范圍桂肌。CONSTRUCTOR構(gòu)造器数焊、FIELD域、LOCAL_VARIABLE局部變量崎场、METHOD方法佩耳、PACKAGE包、PARAMETER參數(shù)谭跨、TYPE類干厚、接口(包括注解類型) 或enum聲明。
2.@Retention,定義了該Annotation被保留的期間RetentionPoicy枚舉的SOURCE源文件保留螃宙、CLASS編譯期蛮瞄、RUNTIME運行期。
3.@Documented,描述其它類型的annotation應(yīng)該被作為被標(biāo)注的程序成員的公共API谆扎,因此可以被例如javadoc此類的工具文檔化挂捅。
4.@Inherited,闡述了某個被標(biāo)注的類型是被繼承的堂湖。
——————————————
自定義
https://www.cnblogs.com/peida/archive/2013/04/24/3036689.html
這篇比較好闲先。
——————————————
Java自帶的常用的三個注解
- @Override注解。這個注解可以用來修飾方法无蜂,并且它只在編譯時有效伺糠,在編譯后的class文件中便不再存在。
這個注解可以用來修飾方法酱讶,并且它只在編譯時有效退盯,在編譯后的class文件中便不再存在彼乌。
2泻肯、@Deprecated 注解渊迁。從它的定義我們可以知道,它會被文檔化灶挟,能夠保留到運行時琉朽,能夠修飾構(gòu)造方法、屬性稚铣、局部變量箱叁、方法、包惕医、參數(shù)耕漱、類型。這個注解的作用是說明被修飾的程序元素已被“廢棄”抬伺,不再建議用戶使用螟够。
3、@SuppressWarnings注解峡钓。 它能夠修飾的程序元素包括類型妓笙、屬性、方法能岩、參數(shù)寞宫、構(gòu)造器、局部變量拉鹃,只能存活在源碼時辈赋,取值為String[]。它的作用是告訴編譯器忽略指定的警告信息膏燕。
deprecation:忽略使用了廢棄的類或方法時的警告炭庙;
unchecked:執(zhí)行了未檢查的轉(zhuǎn)換;
fallthrough:swich語句款中case忘加break從而直接“落入”下一個case煌寇;
path:類路徑或原文件路徑等不存在焕蹄;
serial:可序列化的類缺少serialVersionUID;
finally:存在不能正常執(zhí)行的finally子句阀溶;
all:以上所有情況產(chǎn)生的警告均忽略腻脏。
以上摘自:https://www.zhihu.com/question/47449512/answer/107459084
——————————————
注解的解析:
https://www.daidingkang.cc/2017/07/18/java-reflection-annotations/
這篇比較好。