元注解@Target@Retention@Documented@Inherited的用法

Posted 魏晓蕾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了元注解@Target@Retention@Documented@Inherited的用法相关的知识,希望对你有一定的参考价值。

元注解(meta-annotation)的作用就是负责注解其他注解,Java5定义了元注解类型,他们被用来提供对其它annotation类型做说明。

  1. @Target
  2. @Retention
  3. @Documented
  4. @Inherited

这些类型和它们所支持的类在java.lang.annotation包中可以找到。

  1. @Target(用于描述注解的适用范围 被描述的注解可以用在什么地方)

@Target说明了Annotation所修饰的对象范围:Annotation可用于 packages、type(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。
取值(ElementType):

  • ElementType.CONSTRUCTOR:用于描述构造器。
  • ElementType.FLELD:用于描述域
  • ElementType.LOCAL_VARIABLE:用于描述局部变量
  • ElementType.METHOD:用于描述方法
  • ElementType.PACKAGE:用于描述包
  • ElementType.PARAMETER:用于描述参数
  • ElementType.TYPE:用于描述类、接口(包括注解类型) 或enum声明

使用示例:

@Target( ElementType.PARAMETER, ElementType.METHOD )
public @interface Log 
  String value() default "";

  1. @Retention

@Retention表示需要在什么级别保存该注释信息,被描述的注解在什么范围内有效。
取值(RetentionPoicy):(来自java.lang.annotation.RetentionPolicy的枚举类型值)

  • RetentionPoicy.SOURCE:源码级别保留,编译后即丢弃。
  • RetentionPoicy.CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
  • RetentionPoicy:运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。
@Target( ElementType.PARAMETER, ElementType.METHOD )
@Retention(RetentionPolicy.RUNTIME)
public @interface Log 
   String value() default "";

  1. @Documented

@Documented 可以被例如 javadoc此类的工具文档化,Documented是一个标注注解,没有成员。

@Target( ElementType.PARAMETER, ElementType.METHOD )
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Log 
   String value() default "";

  1. @Inherited

@Inherited允许其他注解继承该注解。

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface Log 
   String value() default "";

以上是关于元注解@Target@Retention@Documented@Inherited的用法的主要内容,如果未能解决你的问题,请参考以下文章

Java 注解自定义注解 ( 元注解 )

Spring----组合注解与元注解

Spring组合注解与元注解

跟王老师学注解:元注解

元注解

学习总结注解和元注解