Java四种元注解
元注解的定义: 元注解负责注解自定义注解,你可以看到许多自定义的注解上面都有这些元注解。
例如RequestMapping:
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping{
......
}
1.@Target
Target注解的作用是:描述注解的使用范围(即:被修饰的注解可以用在什么地方) 。
作用范围 | 中文解释 |
---|---|
ElemenetType.CONSTRUCTOR | 构造器声明 |
ElemenetType.FIELD | 域声明(包括 enum 实例) |
ElemenetType.LOCAL_VARIABLE | 局部变量声明 |
ElemenetType.METHOD | 方法声明 |
ElemenetType.PACKAGE | 包声明 |
ElemenetType.PARAMETER | 参数声明 |
ElemenetType. TYPE | 类、接口、枚举类 |
ElemenetType. PARAMETER | 方法参数 |
ElemenetType. TYPE_PARAMETER | 类型参数 |
ElemenetType. TYPE_USER | 使用类型的任何地方,JDK 1.8 新增 |
2.@Retention
@Retention 用来限定那些被它所注解的注解类在注解到其他类上以后,描述注解保留的时间范围,一共有三种策略,定义在RetentionPolicy枚举中。
RetentionPolicy.SOURCE-------------注解将被编译器丢弃
RetentionPolicy.CLASS -------------注解在class文件中可用,但会被VM丢弃
RetentionPolicy.RUNTIME ---------VM将在运行期也保留注释,因此可以通过反射机制读取注解的信息。
3.@Documented
@Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档。在doc文档中的内容会因为此注解的信息内容不同而不同。相当与@see,@param 等。
4.@Inherited
@Inherited 允许子类继承父类中的注解。
参考
https://blog.csdn.net/pengjunlee/article/details/79683621