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注解,则该注解会被使用了该注解的类的子类所继承。

相关文章

  • spring 和 idea 建议不要使用 @Autowired注解的原因解析

    spring 和 idea 建议不要使用 @Autowired注解的原因解析

    @Autowired 是Spring框架的注解,而@Resource是JavaEE的注解,这篇文章主要介绍了spring和idea建议不要使用@Autowired注解的相关知识,需要的朋友可以参考下
    2023-11-11
  • Springboot通过图片路径形式获取图片

    Springboot通过图片路径形式获取图片

    这篇文章主要介绍了Springboot通过图片路径形式获取图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • ssm框架上传图片保存到本地和数据库示例

    ssm框架上传图片保存到本地和数据库示例

    本篇文章主要介绍了ssm框架上传图片保存到本地和数据库示例,主要使用了Spring+SpringMVC+MyBatis框架集合,有兴趣的可以了解一下。
    2017-03-03
  • 详解如何利用jasypt实现配置文件加密

    详解如何利用jasypt实现配置文件加密

    Jasypt (Java Simplified Encryption) 是一个 java 库,它允许开发人员以最小的成本将基本的加密功能添加到项目中,而无需深入了解密码学的工作原理。本文将利用jasypt实现配置文件加密,感兴趣的可以学习一下
    2022-07-07
  • java基础之接口组成更新的实现

    java基础之接口组成更新的实现

    本文主要介绍了java基础之接口组成更新的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • SpringBoot初始教程之统一异常处理详解

    SpringBoot初始教程之统一异常处理详解

    本篇文章主要介绍了SpringBoot初始教程之统一异常处理详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Java黑科技:replace首个替换一秒搞定

    Java黑科技:replace首个替换一秒搞定

    要实现只替换第一个匹配项,可以使用Java中的String类的replaceFirst方法,该方法接受两个参数,第一个参数是要替换的字符串或正则表达式,第二个参数是替换后的字符串,需要的朋友可以参考下
    2023-10-10
  • IDEA调试功能使用总结(step over/step into/force step into/step out)

    IDEA调试功能使用总结(step over/step into/force step into/step o

    本文主要介绍了IDEA调试功能使用总结(step over/step into/force step into/step out),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java深入浅出数组的定义与使用上篇

    Java深入浅出数组的定义与使用上篇

    数组是有序的元素序列,若将有限个类型相同的变量的集合命名,那么这个名称为数组名。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。数组是在程序设计中,为了处理方便, 把具有相同类型的若干元素按有序的形式组织起来的一种形式
    2022-03-03
  • 理解HashSet里为什么value不是null

    理解HashSet里为什么value不是null

    你有没有想过Java中HashSet的Value为什么要存PRESENT而不是Null?带着这个疑问来看下边的文章寻找答案吧
    2021-09-09

最新评论