Java注解的Retention和RetentionPolicy實(shí)例分析
本文實(shí)例講述了Java注解的Retention和RetentionPolicy。分享給大家供大家參考,具體如下:
一 源碼賞析
1 源碼
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
RetentionPolicy value();
}
public enum RetentionPolicy {
//此注解類(lèi)型的信息只會(huì)記錄在源文件中,編譯時(shí)將被編譯器丟棄,也就是說(shuō)
//不會(huì)保存在編譯好的類(lèi)信息中
SOURCE,
//編譯器將注解記錄在類(lèi)文件中,但不會(huì)加載到JVM中。如果一個(gè)注解聲明沒(méi)指定范圍,則系統(tǒng)
//默認(rèn)值就是Class
CLASS,
//注解信息會(huì)保留在源文件、類(lèi)文件中,在執(zhí)行的時(shí)也加載到Java的JVM中,因此可以反射性的讀取。
RUNTIME
}
2 說(shuō)明
Retention:(中文含義為“保留”)來(lái)定義一個(gè)注解的保存范圍。
@Documented:將自定義注解設(shè)置為文檔說(shuō)明信息。
3 賞析內(nèi)置注解的 Retention
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE) //注解信息只能在源文件中出現(xiàn)
public @interface Override {
}
@Documented
@Retention(RetentionPolicy.RUNTIME) //注解信息在執(zhí)行時(shí)出現(xiàn)
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE) //注解信息在源文件中出現(xiàn)
public @interface SuppressWarnings {
String[] value();
}
二 自定義注解的保存范圍
1 代碼
//定義該自定義注解的保存范圍是RUNTIME
@Retention(value = RetentionPolicy.RUNTIME)
@interface AnnoationRetention
{
public String value();
}
2 說(shuō)明
AnnoationRetention的注解信息會(huì)保留在源文件、類(lèi)文件以及Java虛擬機(jī)中。
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
一次 Java 服務(wù)性能優(yōu)化實(shí)例詳解
這篇文章主要介紹了一次 Java 服務(wù)性能優(yōu)化實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07
java 字符串內(nèi)存分配的分析與總結(jié)(推薦)
下面小編就為大家?guī)?lái)一篇java 字符串內(nèi)存分配的分析與總結(jié)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
springboot解決java.lang.ArrayStoreException異常
這篇文章介紹了springboot解決java.lang.ArrayStoreException異常的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
Spring如何消除代碼中的if-else/switch-case
這篇文章主要給大家介紹了關(guān)于Spring如何消除代碼中if-else/switch-case的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
Java中的for循環(huán)結(jié)構(gòu)及實(shí)例
這篇文章主要介紹了Java中的for循環(huán)結(jié)構(gòu)及實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
10個(gè)實(shí)現(xiàn)Java集合,Map類(lèi)型自由轉(zhuǎn)換的實(shí)用工具方法
這篇文章主要為大家整理了整理了10個(gè)實(shí)用工具方法,可以滿(mǎn)足?Collection、List、Set、Map?之間各種類(lèi)型轉(zhuǎn)化,文中的示例代碼講解詳細(xì),需要的可以參考下2023-09-09
如何在IDEA啟動(dòng)多個(gè)Spring Boot工程實(shí)例(圖文)
這篇文章主要介紹了如何在IDEA啟動(dòng)多個(gè)Spring Boot工程實(shí)例(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
關(guān)于Idea卡在Resolving Maven dependencies的解決方案
本文詳細(xì)介紹了關(guān)于Idea卡在Resolving Maven dependencies的解決方案,文中通過(guò)圖文結(jié)合的形式給大家介紹的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下2024-02-02

