1. 程式人生 > >java元註解(註解在註解上的註解)

java元註解(註解在註解上的註解)

//ElementType.TYPE 給類、介面、列舉上使用
@Target(ElementType.TYPE)//給註解進行註解,表示該註解可以用在什麼地方
//@Retention(RetentionPolicy.CLASS)//表示註解傳遞存活時間,CLASS表示註解保留到編譯進行時期,不會被載入到jvm中
@Retention(RetentionPolicy.RUNTIME)//註解可以保留到程式執行時,並被載入到jvm中,因為反射獲取的時類的執行時的狀態,所以可以通過反射機制讀取註解的資訊,這個使用較多
public @interface AnnotationClass {
    /**
     * 元註解:
     * ★ 元註解:JDK提供了幾個特殊的註解,只能用在註解上面。
     *                @Target:表示該註解可以用於什麼地方,取值如下:
     *                 ElementType.ANNOTATION_TYPE 可以給一個註解進行註解
     *                 ElementType.CONSTRUCTOR 可給構造方法進行註解
     *                 ElementType.FIELD 可給屬性進行註解
     *                 ElementType.LOCAL_VARIABLE 可給區域性變數進行註解
     *                 ElementType.METHOD 可給方法進行註解
     *                 ElementType.PACKAGE 可給一個包進行註解
     *                 ElementType.PARAMETER 可給一個方法內的引數進行註解
     *                 ElementType.TYPE 可給一個型別進行註解,比如類、介面、列舉
     *         @Retention:表示註解傳遞存活時間。取值如下:
     *                 - RetentionPolicy.SOURCE 註解只在原始碼階段保留,在編譯器編譯時它將被丟棄。
     *                 - RetentionPolicy.CLASS 註解只被保留到編譯進行的時候,它並不會被載入到 JVM 中。
     *                 - RetentionPolicy.RUNTIME 註解可保留到程式執行時並被載入到 JVM 中,因此可通過反射機制讀取註解的資訊。
     *         @Documented:將註解包含到 Javadoc 中
     *         @Inherited:允許子類繼承父類中的註解 如父類Animal有一個註解@Test,且@Test註解上有@Inherited註解,
     *                                         那麼該父類Animal的子類Cat也預設有@Test註解
     
*/ }