Java注解的Retention和RetentionPolicy
生活随笔
收集整理的這篇文章主要介紹了
Java注解的Retention和RetentionPolicy
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一 源碼賞析
1 源碼
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.ANNOTATION_TYPE) public @interface Retention {RetentionPolicy value(); }public enum RetentionPolicy {//此注解類型的信息只會記錄在源文件中,編譯時將被編譯器丟棄,也就是說//不會保存在編譯好的類信息中SOURCE,//編譯器將注解記錄在類文件中,但不會加載到JVM中。如果一個注解聲明沒指定范圍,則系統(tǒng)//默認值就是ClassCLASS,//注解信息會保留在源文件、類文件中,在執(zhí)行的時也加載到Java的JVM中,因此可以反射性的讀取。RUNTIME }2 說明
Retention:(中文含義為“保留”)來定義一個注解的保存范圍。
@Documented:將自定義注解設(shè)置為文檔說明信息。
3 賞析內(nèi)置注解的 Retention
@Target(ElementType.METHOD) @Retention(RetentionPolicy.SOURCE) //注解信息只能在源文件中出現(xiàn) public @interface Override { }@Documented @Retention(RetentionPolicy.RUNTIME) //注解信息在執(zhí)行時出現(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 說明
AnnoationRetention的注解信息會保留在源文件、類文件以及Java虛擬機中。
總結(jié)
以上是生活随笔為你收集整理的Java注解的Retention和RetentionPolicy的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SpringBoot+VUE 前端加密算
- 下一篇: 时间序列预测:I概述