java註解@Retention @Target @Document @Inherited

源碼樣例:

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface MthCache {
    String key();
}

@Target 註解

功能:指明瞭修飾的這個註解的使用範圍,即被描述的註解可以用在哪裏。

ElementType的取值包含以下幾種: 

  • TYPE:類,接口或者枚舉
  • FIELD:域,包含枚舉常量
  • METHOD:方法
  • PARAMETER:參數
  • CONSTRUCTOR:構造方法
  • LOCAL_VARIABLE:局部變量
  • ANNOTATION_TYPE:註解類型
  • PACKAGE:包

@Retention 註解

功能:指明修飾的註解的生存週期,即會保留到哪個階段。

RetentionPolicy的取值包含以下三種:

  • SOURCE:源碼級別保留,編譯後即丟棄。
  • CLASS:編譯級別保留,編譯後的class文件中存在,在jvm運行時丟棄,這是默認值。
  • RUNTIME: 運行級別保留,編譯後的class文件中存在,在jvm運行時保留,可以被反射調用。

@Documented 註解

功能:指明修飾的註解,可以被例如javadoc此類的工具文檔化,只負責標記,沒有成員取值。

@Inherited註解

功能:允許子類繼承父類中的註解。

注意!:

@interface意思是聲明一個註解,方法名對應參數名,返回值類型對應參數類型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章