//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注解 */ }