Java内置注解
参考学习:Java 注解 —— 注解的理解、注解的使用与自定义注解
修饰的注解类型 API
注解类型 |
含义 |
Documented |
表示含有该注解类型的元素(带有注释的)会通过javadoc或类似工具进行文档化 |
Inherited |
表示注解类型能被自动继承 |
Retention |
表示注解类型的存活时长 |
Target |
表示注解类型所适用的程序元素的种类 |
参考:Inherited 注解理解
@Inherited:表示该注解类型被自动继承,如果用户在当前类中查询这个元注解类型并且当前类的声明中不包含这个元注解类型,那么也将自动查询当前类的父类是否存在Inherited元注解,这个动作将被重复执行知道这个标注类型被找到,或者是查询到顶层的父类
@Retention:表示该注解类型的注解保留的时长。当注解类型声明中没有@Retention元注解,则默认保留策略为RetentionPolicy.CLASS。关于保留策略(RetentionPolicy)是枚举类型,共定义3种保留方式
表示该注解类型的所使用的程序元素类型。当注解类型声明中没有@Target元注解,则默认为可适用所有的程序元素。如果存在指定的@Target元注解,则编译器强制实施相应的使用限制。关于程序元素(ElementType)是枚举类型,共定义8种程序元素
name |
exp |
SOURCE |
仅存在Java源文件,经过编译器后便丢弃相应的注解 |
CLASS |
存在Java源文件,以及经编译器后生成的Class字节码文件,但在运行时VM不再保留注释 |
RUNTIME |
存在源文件、编译生成的Class字节码文件,以及保留在运行时VM中,可通过反射性地读取注解 |
ElementType |
exp |
TYPE |
类、接口(包括注解类型)或枚举声明 |
CONSTRUCTOR |
构造方法声明 |
PACKAGE |
包声明 |
LOCAL_VARIABLE |
局部变量声明 |
METHOD |
方法声明 |
ANNOTATION_TYPE |
注解类型声明 |
PARAMETER |
参数声明 |
FIELD |
字段声明(包括枚举常量) |