Java annotation元注解原理實(shí)例解析
元注解是指注解的注解。包括 @Retention @Target @Document @Inherited四種。
1. Annotation型定義為@interface, 所有的Annotation會(huì)自動(dòng)繼承java.lang.Annotation這一接口,并且不能再去繼承別的類(lèi)或是接口.
2. 參數(shù)成員只能用public或默認(rèn)(default)這兩個(gè)訪問(wèn)權(quán)修飾
3. 參數(shù)成員只能用基本類(lèi)型byte,short,char,int,long,float,double,boolean八種基本數(shù)據(jù)類(lèi)型和String、Enum、Class、annotations等數(shù)據(jù)類(lèi)型,以及這一些類(lèi)型的數(shù)組.
4. 要獲取類(lèi)方法和字段的注解信息,必須通過(guò)Java的反射技術(shù)來(lái)獲取 Annotation對(duì)象,因?yàn)槟愠酥鉀](méi)有別的獲取注解對(duì)象的方法
5. 注解也可以沒(méi)有定義成員, 不過(guò)這樣注解就沒(méi)啥用了
1. @Target 表示該注解目標(biāo),可能的 ElemenetType 參數(shù)包括:
ElemenetType.CONSTRUCTOR 構(gòu)造器聲明
ElemenetType.FIELD 域聲明(包括 enum 實(shí)例)
ElemenetType.LOCAL_VARIABLE 局部變量聲明
ElemenetType.METHOD 方法聲明
ElemenetType.PACKAGE 包聲明
ElemenetType.PARAMETER 參數(shù)聲明
ElemenetType.TYPE 類(lèi),接口(包括注解類(lèi)型)或enum聲明
2. @Retention 表示該注解的生命周期,可選的 RetentionPolicy 參數(shù)包括
RetentionPolicy.SOURCE 注解將被編譯器丟棄
RetentionPolicy.CLASS 注解在class文件中可用,但會(huì)被VM丟棄
RetentionPolicy.RUNTIME VM將在運(yùn)行期也保留注釋?zhuān)虼丝梢酝ㄟ^(guò)反射機(jī)制讀取注解的信息
3. @Documented 指示將此注解包含在 javadoc 中
4. @Inherited 指示允許子類(lèi)繼承父類(lèi)中的注解
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Mybatis -如何處理clob類(lèi)型數(shù)據(jù)
這篇文章主要介紹了Mybatis 如何處理clob類(lèi)型數(shù)據(jù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06java異步寫(xiě)日志到文件中實(shí)現(xiàn)代碼
這篇文章主要介紹了java異步寫(xiě)日志到文件中實(shí)現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04Java基礎(chǔ)之Thymeleaf的簡(jiǎn)單使用
這篇文章主要介紹了Java基礎(chǔ)之Thymeleaf的簡(jiǎn)單使用,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04解決執(zhí)行maven命令時(shí)提示Process terminated的問(wèn)題
這篇文章主要介紹了解決執(zhí)行maven命令時(shí)提示Process terminated的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09Java 基礎(chǔ)之NIO 學(xué)習(xí)詳解
這篇文章主要介紹了java基礎(chǔ)之NIO介紹及使用,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-09-09