元註解:註解的註解 @Target @Retention @Document @Inherited 用於自定義註解
1、@Target 註解的作用目標
2、@Retention 註解的保留策略
3、@Document 註解將被記錄在javadoc中
4、@Inherited 子類可以繼承父類標註的該註解
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface test{
boolean test() default true;
}
註解目標作用域
@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) // 包
@Retention(RetentionPolicy.SOURCE) // 註解只在源碼中保留,編譯時忽略掉
@Retention(RetentionPolicy.CLASS) // 默認的保留策略,註解會在class文件保留,運行時不會保留
@Retention(RetentionPolicy.RUNTIME) // 註解會一直保留到運行時,可以通過反射獲取到
註解保留時間,生命週期長度 SOURCE < CLASS < RUNTIME
@Documented // 註解會被javadoc記錄,包括在生成的API文檔中
@Inherited // 標註後,子類可以繼承父類的該註解
@interface // 用於聲明自定義註解