自定義注解的場景及實現


java中有四種元注解:@Retention、@Inherited、@Documented、@Target

@Retention
注解的保留位置(枚舉RetentionPolicy),RetentionPolicy可選值:

SOURCE:注解僅存在於源碼中,在class字節碼文件中不包含
CLASS:默認的保留策略,注解在class字節碼文件中存在,但運行時無法獲得
RUNTIME:注解在class字節碼文件中存在,在運行時可以通過反射獲取到
@Inherited
聲明子類可以繼承此注解,如果一個類A使用此注解,則類A的子類也繼承此注解

@Documented
聲明注解能夠被javadoc等識別(下面自定義注解處會有例子做介紹,點擊查看)

@Target
用來聲明注解范圍(枚舉ElementType),ElementType可選值:

TYPE:接口、類、枚舉、注解
FIELD:字段、枚舉的常量
METHOD:方法
PARAMETER:方法參數
CONSTRUCTOR:構造函數
LOCAL_VARIABLE:局部變量
ANNOTATION_TYPE:注解
PACKAGE:包

自定義注解經常使用場景:

1.生成文檔.例如:@see,@param,@return 等

2.代替配置文件功能.例如spring基於注解的配置

3.在編譯時進行格式檢查。如@override 放在方法前,如果你這個方法並不是覆蓋了超類方法,則編譯時就能檢查出。

不經常使用的場景:

1.類屬性自動賦值

2.驗證對象屬性完整性

 

@Retention(RetentionPolicy.RUNTIME)
@Inherited
@Documented
@Target({ElementType.FIELD,ElementType.METHOD})
@interface MyAnno{
    public String name() default "zhangsan";
    public String email() default "hello@example.com";
}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM