JDK 5 提供的注解:Target、Inherited和Documented的区别

 更新时间:2016年02月29日 23:55:36   投稿:mdxy-dxy  
这篇文章主要介绍了JDK 5 提供的注解:Target、Inherited和Documented的区别,需要的朋友可以参考下

JDK 5提供的注解,除了Retention以外,还有另外三个,即Target 、Inherited 和 Documented。

Target 目标即Target注解用在哪里, 定义了注解使用的时机,即注解所适用的程序元素的种类。如果注解类型声明中不存在 Target 元注解,则声明的类型可以用在任一程序元素上。如果存在这样的元注解,则编译器强制实施指定的使用限制。

Target 定义如下:

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
  ElementType[] value();
}

可以看到,Target 只有一个value属性,类型为枚举类型ElementType。ElementType 声明如下:

public enum ElementType {
  /** 注解可以用在类、接口(包括注解类型)或枚举声明 */
  TYPE,
  /** 字段声明(包括枚举常量) */
  FIELD,
  /** 方法声明 */
  METHOD,
  /** 参数声明 */
  PARAMETER,
  /** 构造方法声明 */
  CONSTRUCTOR,
  /** 局部变量声明 */
  LOCAL_VARIABLE,
  /** 注解类型声明 */
  ANNOTATION_TYPE,
  /** 包声明 */
  PACKAGE
}

Documented注解表明制作javadoc时,是否将注解信息加入文档。如果注解在声明时使用了@Documented,则在制作javadoc时注解信息会加入javadoc。注解声明如下:

@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)//说明该注解只能在声明注解时使用,即元注解
public @interface Documented {}

Inherited 注解同样是元注解,声明如下:

@Documented
@Retention(value=RUNTIME)
@Target(value=ANNOTATION_TYPE)
public @interface Inherited {}

Inherited 注解表明注解是否会被子类继承,缺省情况是不继承的。当注解在声明时,使用了@Inherited注解,则该注解会被使用了该注解的类的子类所继承。

相关文章

  • java多线程之定时器Timer的使用详解

    java多线程之定时器Timer的使用详解

    本篇文章主要介绍了java多线程之定时器Timer的使用详解,Time类主要负责完成定时计划任务的功能,有兴趣的可以了解一下。
    2017-04-04
  • Java并发编程示例(七):守护线程的创建和运行

    Java并发编程示例(七):守护线程的创建和运行

    这篇文章主要介绍了Java并发编程示例(七):守护线程的创建和运行,在本节示例中,我们将创建两个线程,一个是普通线程,向队列中写入事件,另外一个是守护线程,清除队列中的事件,需要的朋友可以参考下
    2014-12-12
  • Spring5.2.x 源码本地环境搭建的方法步骤

    Spring5.2.x 源码本地环境搭建的方法步骤

    这篇文章主要介绍了Spring5.2.x 源码本地环境搭建的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java 中的静态字段和静态方法 

    Java 中的静态字段和静态方法 

    这篇文章主要介绍了Java中的静态字段和静态方法,文章围绕Java 静态方法展开详细内容,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-03-03
  • 解决Eclipse的Servers视图中无法添加Tomcat6/Tomcat7的方法

    解决Eclipse的Servers视图中无法添加Tomcat6/Tomcat7的方法

    这篇文章主要介绍了解决Eclipse的Servers视图中无法添加Tomcat6/Tomcat7的方法的相关资料,需要的朋友可以参考下
    2017-02-02
  • 深入剖析springBoot中的@Scheduled执行原理

    深入剖析springBoot中的@Scheduled执行原理

    这篇文章主要介绍了springBoot中的@Scheduled执行原理,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • Spring Boot中WebMvcConfig配置详解及示例代码

    Spring Boot中WebMvcConfig配置详解及示例代码

    WebMvcConfig是一个配置类,它继承了WebMvcConfigurationSupport,允许我们对SpringMVC进行更细粒度的控制,这篇文章主要给大家介绍了关于Spring Boot中WebMvcConfig配置详解及示例的相关资料,需要的朋友可以参考下
    2024-03-03
  • SpringBoot Profile多环境配置方式

    SpringBoot Profile多环境配置方式

    这篇文章主要介绍了SpringBoot Profile多环境配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • SpringBoot @NotBlank错误的解决方案

    SpringBoot @NotBlank错误的解决方案

    这篇文章主要介绍了SpringBoot @NotBlank错误的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Java利用Poi读取excel并对所有类型进行处理

    Java利用Poi读取excel并对所有类型进行处理

    这篇文章主要为大家详细介绍了Java利用Poi读取excel并对所有类型进行处理的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2024-01-01

最新评论