java元注解 @Retention注解使用


@Retention定義了該Annotation被保留的時間長短:

1.某些Annotation僅出現在源代碼中,而被編譯器丟棄;

2.另一些卻被編譯在class文件中,注解保留在class文件中,在加載到JVM虛擬機時丟棄,這是默認行為,所以沒有用Retention注解的注解,都會采用這種策略

3.而另一些在class被裝載時將被讀取,注解保留在程序運行期間,此時可以通過反射獲得定義在某個類上的所有注解

  作用:表示需要在什么級別保存該注釋信息,用於描述注解的生命周期(即:被描述的注解在什么范圍內有效)

  取值(RetentionPoicy)有:

    1.SOURCE:在源文件中有效(即源文件保留)
    2.CLASS:在class文件中有效(即class保留)
    3.RUNTIME:在運行時有效(即運行時保留)

  Retention meta-annotation類型有唯一的value作為成員

它的取值來自java.lang.annotation.RetentionPolicy的枚舉類型值。具體實例如下:

/**
* 限流注解
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimit {
/**
* @return rate limit in queries per second
*/
String value() default "";

double permits() default 1000;

}

 RateLimit 注解的的RetentionPolicy的屬性值是RUNTIME,這樣注解處理器可以通過反射,獲取到該注解的屬性值,從而去做一些運行時的邏輯處理

 


免責聲明!

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



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