JAVA 元註解 @Target @Retention @Documented @Inherited
JAVA 元註解 @Target @Retention @Documented @Inherited
一、元註解
JDK1.5起提供了四個元註解,即@Target,@Retention,@Document,@Inherited。所謂的元註解就是註解的註解的意思,如果我們在開發過程中需要自定義註解以滿足需求,我們自定義的註解就需要被元註解修飾,比如我們新自定義CreateAnnotation註解
@Target({ ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface CreateAnnotation {
}
1. @Target
// 單引數
@Target({ ElementType.METHOD })
// 多引數
@Target(value = {ElementType.METHOD,ElementType.TYPE})
@Target註解用於定義註解的使用位置,如果沒有該註解,表示註解可以用於任何地方
@Target的ElementType取值有以下型別:
- TYPE:類,介面或者列舉
- FIELD:域,包含列舉常量
- METHOD:方法
- PARAMETER:引數
- CONSTRUCTOR:構造方法
- LOCAL_VARIABLE:區域性變數
- ANNOTATION_TYPE:註解型別
- PACKAGE:包
2. @Retention
@Retention註解用於指明修飾的註解的生存週期,即會保留到哪個階段。格式為:
@Retention(RetentionPolicy.RUNTIME)
RetentionPolicy的取值包含以下三種:
- SOURCE:原始碼級別保留,編譯後即丟棄。
- CLASS:編譯級別保留,編譯後的class檔案中存在,在jvm執行時丟棄,這是預設值。
- RUNTIME:執行級別保留,編譯後的class檔案中存在,在jvm執行時保留,可以被反射呼叫。
3. @Documented
指明修飾的註解,可以被例如javadoc此類的工具文件化,只負責標記,沒有成員取值。
4. @Inherited
@Inherited註解用於標註一個父類的註解是否可以被子類繼承,如果一個註解需要被其子類所繼承,則在宣告時直接使用@Inherited註解即可。如果沒有寫此註解,則無法被子類繼承。下面做一個測試:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
//如果父類使用了InHeritedApplication註解,則子類應該繼承
@Inherited
@interface InHeritedApplication {
}
//父類使用了@InHeritedApplication註解
@InHeritedApplication
class Animal {
}
class Dog extends Animal{
}
則 Student類也有@HeritedApplication
相關文章
- JAVA元註解@interface詳解(@Target,@Documented,@Retention,@Inherited)Java
- Java面試題(19)Java元註解之@RetentionJava面試題
- 元註解——java.lang.annotation.Target(1.8)Java
- 深入理解 Java 註解 [元註解(一)]Java
- Java元註解介紹Java
- 註解專題(一)Java元註解,內建註解Java
- java中@Inherited是什麼?Java
- java中@Retention是什麼?Java
- java註解Java
- 註解 javaJava
- Java註解詳解Java
- Java 註解詳解Java
- JAVA-註解(2)-自定義註解及反射註解Java反射
- 4 種標準元註解
- Java中的註解-自定義註解Java
- JAVA 註解 AnnontationJava
- Java註解AnnotatonJava
- Java反射-註解Java反射
- Java™ 教程(註解)Java
- Java —— 註解(Annotation)Java
- Java(5)註解Java
- java註解,反射Java反射
- Java Annotation 註解Java
- Java--註解Java
- Java 註解(Annotation)Java
- Java註解詳解「註解專案實戰」Java
- Java註解(Annotation)詳解Java
- Java 8 註解探秘Java
- Java 註解完全解析Java
- 自定義JAVA註解Java
- Java 註解全面解析Java
- Java反射與註解Java反射
- java-Annotation註解Java
- 初識 Java 註解Java
- Java之註解(Annotation)Java
- Java學習_註解Java
- Java註解的使用Java
- Java 註解和反射Java反射