Java注解的Retention和RetentionPolicy实例分析

 更新时间:2019年09月12日 08:42:58   作者:cakincqm  
这篇文章主要介绍了Java注解的Retention和RetentionPolicy,结合实例形式分析了Java注解Retention和RetentionPolicy的基本功能及使用方法,需要的朋友可以参考下

本文实例讲述了Java注解的Retention和RetentionPolicy。分享给大家供大家参考,具体如下:

一 源码赏析

1 源码

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
  RetentionPolicy value();
}
public enum RetentionPolicy {
  //此注解类型的信息只会记录在源文件中,编译时将被编译器丢弃,也就是说
  //不会保存在编译好的类信息中
  SOURCE,
  //编译器将注解记录在类文件中,但不会加载到JVM中。如果一个注解声明没指定范围,则系统
  //默认值就是Class
  CLASS,
  //注解信息会保留在源文件、类文件中,在执行的时也加载到Java的JVM中,因此可以反射性的读取。
  RUNTIME
}

2 说明

Retention:(中文含义为“保留”)来定义一个注解的保存范围。

@Documented:将自定义注解设置为文档说明信息。

3 赏析内置注解的 Retention

@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE) //注解信息只能在源文件中出现
public @interface Override {
}
@Documented
@Retention(RetentionPolicy.RUNTIME)  //注解信息在执行时出现
@Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, PARAMETER, TYPE})
public @interface Deprecated {
}
@Target({TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE})
@Retention(RetentionPolicy.SOURCE)  //注解信息在源文件中出现
public @interface SuppressWarnings {
  String[] value();
}

二 自定义注解的保存范围

1 代码

//定义该自定义注解的保存范围是RUNTIME
@Retention(value = RetentionPolicy.RUNTIME)
@interface AnnoationRetention
{
  public String value();
}

2 说明

AnnoationRetention的注解信息会保留在源文件、类文件以及Java虚拟机中。

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • 详解java中jvm虚拟机栈的作用

    详解java中jvm虚拟机栈的作用

    这篇文章主要介绍了jvm虚拟机栈的作用,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • Mybatis中拦截器的简单实现方法

    Mybatis中拦截器的简单实现方法

    这篇文章主要给大家介绍了关于Mybatis中拦截器的简单实现方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Mybatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Java二叉树的遍历思想及核心代码实现

    Java二叉树的遍历思想及核心代码实现

    今天小编就为大家分享一篇关于Java二叉树的遍历思想及核心代码实现,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • MyBatis是如何实现日志模块的详解

    MyBatis是如何实现日志模块的详解

    这篇文章主要给大家介绍了关于MyBatis是如何实现日志模块的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用MyBatis具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • Spring的@PreAuthorize注解自定义权限校验详解

    Spring的@PreAuthorize注解自定义权限校验详解

    这篇文章主要介绍了Spring的@PreAuthorize注解自定义权限校验详解,由于项目中,需要对外开放接口,要求做请求头校验,不做其他权限控制,所以准备对开放的接口全部放行,不做登录校验,需要的朋友可以参考下
    2023-11-11
  • Java集合之同步容器详解

    Java集合之同步容器详解

    这篇文章主要为大家详细介绍了Java集合之同步容器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • java截取图片示例

    java截取图片示例

    这篇文章主要介绍了java截取图片示例,把代码中的图片路径改成自己的图片,运行就可以看到效果了,需要的朋友可以参考下
    2014-03-03
  • SpringBoot集成EasyExcel的步骤

    SpringBoot集成EasyExcel的步骤

    EasyExcel是阿里巴巴开源poi插件之一,主要解决了poi框架使用复杂,sax解析模式不容易操作,数据量大起来容易OOM,解决了POI并发造成的报错。主要解决方式:通过解压文件的方式加载,一行一行的加载,并且抛弃样式字体等不重要的数据,降低内存的占用。
    2021-06-06
  • Java常用类库StringBuffer,Runtime,日期操作类等类库总结

    Java常用类库StringBuffer,Runtime,日期操作类等类库总结

    这篇文章主要介绍了Java常用类库StringBuffer,Runtime,日期操作类等类库总结,需要的朋友可以参考下
    2020-02-02
  • Spring boot集成swagger2生成接口文档的全过程

    Spring boot集成swagger2生成接口文档的全过程

    这篇文章主要给大家介绍了关于Spring boot集成swagger2生成接口文档的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09

最新评论