1.定義注解接口
-
@Documented -
@Retention(RUNTIME) -
@Target(METHOD) -
public @interface MyLog { -
String value() default "日志注解"; -
}
@Documented 注解: Documented 注解表明這個注解應該被 javadoc工具記錄. 默認情況下,javadoc是不包括注解的.
但如果聲明注解時指定了 @Documented,則它會被 javadoc 之類的工具處理, 所以注解類型信息也會被包括在生成的文檔中
@Inherited 注解: 它指明被注解的類會自動繼承. 更具體地說,如果定義注解時使用了 @Inherited 標記
然后用定義的注解來標注另一個父類, 父類又有一個子類(subclass),則父類的所有屬性將被繼承到它的子類中
-
@Target(ElementType.TYPE) //接口、類、枚舉、注解
-
@Target(ElementType.FIELD) //字段、枚舉的常量
-
@Target(ElementType.METHOD) //方法
-
@Target(ElementType.PARAMETER) //方法參數
-
@Target(ElementType.CONSTRUCTOR) //構造函數
-
@Target(ElementType.LOCAL_VARIABLE)//局部變量
-
@Target(ElementType.ANNOTATION_TYPE)//注解
-
@Target(ElementType.PACKAGE) ///包
-
1.RetentionPolicy.SOURCE——這種類型的Annotations只在源代碼級別保留,編譯時就會被忽略
2.RetentionPolicy.CLASS——這種類型的Annotations編譯時被保留,在class文件中存在,但JVM將會忽略
-
3.RetentionPolicy.RUNTIME——這種類型的Annotations將被JVM保留,所以他們能在運行時被JVM或其他使用反射機制的代碼所讀取和使用.
