源碼樣例:
@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意思是聲明一個注解,方法名對應參數名,返回值類型對應參數類型。